From 1cf955a715830130b7add8c1183d65b0f442fd23 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Sat, 24 Oct 2009 14:24:17 +0200 Subject: Initial commit --- COPYING | 340 +++++++ HISTORY | 16 + Makefile | 141 +++ README | 74 ++ channelmap.conf.example | 30 + common.cpp | 29 + common.h | 773 +++++++++++++++ database/database.cpp | 274 ++++++ database/database.h | 834 +++++++++++++++++ database/metadata.cpp | 389 ++++++++ database/metadata.h | 60 ++ database/object.cpp | 1702 ++++++++++++++++++++++++++++++++++ database/object.h | 397 ++++++++ database/resources.cpp | 282 ++++++ database/resources.h | 51 + misc/config.cpp | 109 +++ misc/config.h | 33 + misc/menusetup.cpp | 205 ++++ misc/menusetup.h | 78 ++ misc/search.cpp | 795 ++++++++++++++++ misc/search.h | 90 ++ misc/util.cpp | 488 ++++++++++ misc/util.h | 45 + receiver/filehandle.cpp | 8 + receiver/filehandle.h | 26 + receiver/livereceiver.cpp | 175 ++++ receiver/livereceiver.h | 40 + receiver/recplayer.cpp | 171 ++++ receiver/recplayer.h | 39 + server/server.cpp | 366 ++++++++ server/server.h | 172 ++++ upnp.cpp | 129 +++ upnp.h | 42 + upnpcomponents/connectionmanager.cpp | 393 ++++++++ upnpcomponents/connectionmanager.h | 67 ++ upnpcomponents/contentdirectory.cpp | 306 ++++++ upnpcomponents/contentdirectory.h | 38 + upnpcomponents/dlna.cpp | 235 +++++ upnpcomponents/dlna.h | 64 ++ upnpcomponents/upnpservice.cpp | 118 +++ upnpcomponents/upnpservice.h | 27 + upnpcomponents/upnpwebserver.cpp | 335 +++++++ upnpcomponents/upnpwebserver.h | 123 +++ web/xml/cds_scpd.xml | 145 +++ web/xml/cms_scpd.xml | 133 +++ 45 files changed, 10387 insertions(+) create mode 100644 COPYING create mode 100644 HISTORY create mode 100644 Makefile create mode 100644 README create mode 100644 channelmap.conf.example create mode 100644 common.cpp create mode 100644 common.h create mode 100644 database/database.cpp create mode 100644 database/database.h create mode 100644 database/metadata.cpp create mode 100644 database/metadata.h create mode 100644 database/object.cpp create mode 100644 database/object.h create mode 100644 database/resources.cpp create mode 100644 database/resources.h create mode 100644 misc/config.cpp create mode 100644 misc/config.h create mode 100644 misc/menusetup.cpp create mode 100644 misc/menusetup.h create mode 100644 misc/search.cpp create mode 100644 misc/search.h create mode 100644 misc/util.cpp create mode 100644 misc/util.h create mode 100644 receiver/filehandle.cpp create mode 100644 receiver/filehandle.h create mode 100644 receiver/livereceiver.cpp create mode 100644 receiver/livereceiver.h create mode 100644 receiver/recplayer.cpp create mode 100644 receiver/recplayer.h create mode 100644 server/server.cpp create mode 100644 server/server.h create mode 100644 upnp.cpp create mode 100644 upnp.h create mode 100644 upnpcomponents/connectionmanager.cpp create mode 100644 upnpcomponents/connectionmanager.h create mode 100644 upnpcomponents/contentdirectory.cpp create mode 100644 upnpcomponents/contentdirectory.h create mode 100644 upnpcomponents/dlna.cpp create mode 100644 upnpcomponents/dlna.h create mode 100644 upnpcomponents/upnpservice.cpp create mode 100644 upnpcomponents/upnpservice.h create mode 100644 upnpcomponents/upnpwebserver.cpp create mode 100644 upnpcomponents/upnpwebserver.h create mode 100644 web/xml/cds_scpd.xml create mode 100644 web/xml/cms_scpd.xml diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..f90922e --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/HISTORY b/HISTORY new file mode 100644 index 0000000..854250e --- /dev/null +++ b/HISTORY @@ -0,0 +1,16 @@ +VDR Plugin 'upnp' Revision History +---------------------------------- + +2009-10-23: Version 0.0.1-alpha1 + +- Fixed #185: Database rejected statements with single quotes inside strings + +2009-10-23: Version 0.0.1-alpha0 + +- Initial revision. +- Known limitations: currently only channel lists with less than 30 channels + work. +- LiveTV support +- Limited sort capabilities: Title, Creator, Write status, Publisher, + Description, Long description, Genre + Note: Sort will only work if this properties are present diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fa6d29b --- /dev/null +++ b/Makefile @@ -0,0 +1,141 @@ +# +# Makefile for a Video Disk Recorder plugin +# +# $Id$ + +# The official name of this plugin. +# This name will be used in the '-P...' option of VDR to load the plugin. +# By default the main source file also carries this name. +# IMPORTANT: the presence of this macro is important for the Make.config +# file. So it must be defined, even if it is not used here! +# +PLUGIN = upnp +COMMON = common.h + +### The version number of this plugin (taken from the main source file): + +VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).cpp | awk '{ print $$6 }' | sed -e 's/[";]//g') + +### The C++ compiler and options: + +CXX ?= g++ +CXXFLAGS ?= -fPIC -g -Wall -O2 -Wextra -Woverloaded-virtual -Wno-parentheses -Wl,-R/usr/local/lib + +### The directory environment: + +VDRDIR = ../../.. +LIBDIR = ../../lib +TMPDIR = /tmp + +WEBDIR = $(shell grep '\#define UPNP_DIR_PRESENTATION*' $(COMMON) | awk '{ print $$3 }' | sed -e 's/["/]//g') + +### Allow user defined options to overwrite defaults: + +-include $(VDRDIR)/Make.config + +#DESDIR = /var/lib/vdrdevel/plugins/$(PLUGIN) +DESDIR = $(CONFDIR)/plugins/$(PLUGIN) + +### The version number of VDR's plugin API (taken from VDR's "config.h"): + +APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) + +### The name of the distribution archive: + +ARCHIVE = $(PLUGIN)-$(VERSION) +PACKAGE = vdr-$(ARCHIVE) + +### Includes and Defines (add further entries here): + +LIBS += -lupnp -lixml -lsqlite3 + +INCLUDES += -I$(VDRDIR)/include -I/usr/include \ + +DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' + +### The object files (add further files here): + +# Root folder +OBJS = $(PLUGIN).o \ + common.o \ + misc/menusetup.o \ + misc/util.o \ + misc/config.o \ + misc/search.o \ + database/database.o \ + database/metadata.o \ + database/object.o \ + database/resources.o \ + server/server.o \ + upnpcomponents/dlna.o \ + upnpcomponents/upnpwebserver.o \ + upnpcomponents/upnpservice.o \ + upnpcomponents/connectionmanager.o \ + upnpcomponents/contentdirectory.o \ + receiver/livereceiver.o \ + receiver/recplayer.o \ + receiver/filehandle.o \ + +### The main target: + +all: libvdr-$(PLUGIN).so i18n + +### Implicit rules: + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $(LIBS) -o $@ $< + +### Dependencies: + +MAKEDEP = $(CXX) -MM -MG +DEPFILE = .dependencies + +$(DEPFILE): Makefile + @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.cpp) > $@ + +-include $(DEPFILE) + +### Internationalization (I18N): + +PODIR = po +LOCALEDIR = $(VDRDIR)/locale +I18Npo = $(wildcard $(PODIR)/*.po) +I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) +I18Npot = $(PODIR)/$(PLUGIN).pot + +%.mo: %.po + msgfmt -c -o $@ $< + +$(I18Npot): $(wildcard *.cpp) + xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='' -o $@ $^ + +%.po: $(I18Npot) + msgmerge -U --no-wrap --no-location --backup=none -q $@ $< + @touch $@ + +$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo + @mkdir -p $(dir $@) + cp $< $@ + +.PHONY: i18n +i18n: $(I18Nmsgs) $(I18Npot) + +### Targets: + +libvdr-$(PLUGIN).so: $(OBJS) + $(CXX) $(CXXFLAGS) $(LIBS) -shared $(OBJS) -o $@ -lc + @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) + @-rm -rf $(DESDIR)/$(WEBDIR) + @mkdir -p $(DESDIR)/$(WEBDIR) + @cp --remove-destination -r $(WEBDIR)/* $(DESDIR)/$(WEBDIR) + +dist: clean + @-rm -rf $(TMPDIR)/$(ARCHIVE) + @mkdir $(TMPDIR)/$(ARCHIVE) + @cp -a * $(TMPDIR)/$(ARCHIVE) + @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) + @-rm -rf $(TMPDIR)/$(ARCHIVE) + @echo Distribution package created as $(PACKAGE).tgz + +clean: + @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot diff --git a/README b/README new file mode 100644 index 0000000..1557c0b --- /dev/null +++ b/README @@ -0,0 +1,74 @@ +This is a "plugin" for the Video Disk Recorder (VDR). + +Written by: Denis Loh + Andreas Günther + +Project's homepage: http://upnp.vdr-developer.org + +Latest version available at: http://upnp.vdr-developer.org + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +See the file COPYING for more information. + +Please note: This plugin is written under the terms of open source +redistribution by + +Hochschule für Telekommunikation Leipzig, +University of Applied Science +Gustav-Freytag-Straße 43-45 +04277 Leipzig +Germany +http://www.hftl.de + +All rights reserved. + +Description: + +UPnP/DLNA Plugin for Video Disk Recorder + +This Plugins extends the VDR with the possibility to act as an UPnP/DLNA Media +Server (DMS). It will serve VDR's contents in the network to any UPnP-AV and +DLNA capable devices. + +The plugin requires a valid network connection with a IPv4 address. It will find +its settings automatically by default. In this case, the first network device in +the network device list with a valid IPv4 address and port 49152 will be used +for connections. You can change this behavior either by setting the command line +options or by editing the setup via the VDRs setup page. The command line +options have a higher priority and substitute the menu settings. + +The command line settings are: + -i --int= The server network + interface + e.g: eth0, wlan1 etc. + If given option '-a' must + be absent. + -a
--address=
The server IPv4 address. + If given option '-i' must + be absent. + -p --port= The server port + Supported ports: + 0 (auto detect) + 49152-65535 (user defined) + +If not options are set, menu options will be used. + +The server has a unique identifier, which is +"uuid:b120ba52-d88d-4500-9b64-888971d83fd3". Other devices in the network can +find and identify the VDR UPnP Server with this ID. However, the server should +be found automatically and being listed under the supported media server +devices. If not, please report this as a bug on the projects homepage or send an +email to the developers of this plugin with the full device description and, if +applicable, the errors thrown by the media player device and the server. + +Dependencies: + +This plugin is tested with and requires the following libraries to work: + +libupnp-1.6.6 +libsqlite-3.6 + +libupnp-1.8.0 is known not to work with this plugin! diff --git a/channelmap.conf.example b/channelmap.conf.example new file mode 100644 index 0000000..6e541d5 --- /dev/null +++ b/channelmap.conf.example @@ -0,0 +1,30 @@ +##################################################### +# # +# VDR UPnP/DLNA Plugin # +# # +# Channel mapping # +# # +##################################################### +# +# Default behavior of the plugin is that it will load +# all channels from VDRs channels.conf and creates +# a Video Broadcast item for every single channel +# +# It can be controlled by combining or excluding +# certain channels in this configuration file +# +# Syntax: +# +# Each rule must be written on a separate line +# +# Combine multiple channels (at least 2) +# :[:] +# +# Example: T-8468-514-516:C-8468-514-516:S-8468-514-516 +# This will combine three channels to one metadata item +# +# Exclude a channel from list +# - +# +# Example: -T-8468-514-516 +# This will exclude that channel from loading diff --git a/common.cpp b/common.cpp new file mode 100644 index 0000000..7efe9ad --- /dev/null +++ b/common.cpp @@ -0,0 +1,29 @@ +/* + * File: common.cpp + * Author: savop + * + * Created on 17. April 2009, 20:53 + */ + +#include +#include "common.h" + +DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU = { "MPEG2_TS_SD_EU", "video/mpeg" }; +DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = { "AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts" }; +DLNAProfile DLNA_PROFILE_MPEG1_L3 = { "MP3", "audio/mpeg" }; + +DLNAIconProfile DLNA_ICON_JPEG_SM_24 = { "image/jpeg", 48, 48, 24 }; +DLNAIconProfile DLNA_ICON_JPEG_LRG_24 = { "image/jpeg", 120, 120, 24 }; +DLNAIconProfile DLNA_ICON_PNG_SM_24A = { "image/png", 48, 48, 24 }; +DLNAIconProfile DLNA_ICON_PNG_LRG_24A = { "image/png", 120, 120, 24 }; + +#define MESSAGE_SIZE 256 + +void message(const char* File, int Line, const char* Format, ...){ + va_list ap; + char Message[MESSAGE_SIZE]; + snprintf(Message, MESSAGE_SIZE, "(%s:%d) %s\n", File, Line, Format); + va_start(ap, Format); + vprintf(Message, ap); + va_end(ap); +} \ No newline at end of file diff --git a/common.h b/common.h new file mode 100644 index 0000000..191dd3a --- /dev/null +++ b/common.h @@ -0,0 +1,773 @@ +/* + * File: common.h + * Author: savop + * + * Created on 19. April 2009, 15:22 + */ + +#ifndef _COMMON_H +#define _COMMON_H + +#include "misc/util.h" +#include +#include +#include +#include +#include + +/**************************************************** + * + * Table of contents + * + * This file includes all (or at least most) constant + * definitions for this plugin. As was growing very + * fast, I decided to insert this table of contents + * for faster navigations. However, you have to scroll + * on your own. + * + * 0. Global constants + * 1. VDR and the VDR subsystem + * 1.1 Versioning + * 1.2 Logging + * 1.3 Plugin constants + * 1.4 Plugin setup + * 2. UPnP + * 2.1 UPnP Namespaces + * 2.2 Directory hierarchy + * 2.3 internal Webserver + * 2.4 Device description + * 2.5 Connection Manager Service (CMS) + * 2.6 Content Directory Service (CDS) + * 2.7 UPnP AV Transport (AVT) + * 2.8 Media classes + * 2.9 Storage Media + * 2.10 Known Errors + * 2.11 Write Status + * 2.12 DIDL Properties + * 3. DLNA + * 3.1 Protocol Info Fields + * 3.2 Protocol Info Flags + * 3.3 Media Profiles + * 3.4 Container types + * 3.5 Device types + * 4. SQLite + * 4.1 Database setup + * + ****************************************************/ + +/**************************************************** + * + * 0. Global constants + * + ****************************************************/ + +#define IN +#define OUT +#define INOUT + +//#define DEBUG + +#define TOSTRING(s) #s + +#define FALSE 0 +#define TRUE 1 + +#define bool_t uint8_t + +/** + * Translation with gettext() + */ +#ifndef _ +#define _(s) tr(s) +#endif + +#define KB(i) i*1024 +#define MB(i) i*KB(1024) + +#define SIZEOF_UUID_STRING 37 // 00000000-0000-0000-0000-000000000000 = 32 + 4 + 1 + +#define strdup0(s) (s!=NULL?strdup(s):NULL) + +#define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL +#define prop(s) substr(s, 0, strchr(s,'@')-s) + +void message(const char* File, int Line, const char* Format, ...) __attribute__ ((format (printf, 3, 4))); + +/**************************************************** + * + * 1. VDR and the VDR subsystem + * + ****************************************************/ + +#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr" +#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts" +#define VDR_MAX_FILES_PER_RECORDING 65535 +#define VDR_FILENAME_BUFSIZE 2048 + +/**************************************************** + * + * 1.1 Versioning + * + ****************************************************/ + +#define VERSION_INT(maj, min, mic) (maj<<16 | min<<8 | mic) +#define VERSION_DOT(maj, min, mic) maj ##.## min ##.## mic +#define VERSION_STR(maj, min, mic) TOSTRING(maj.min.mic) + +/* If any changes on the version number are commited, please change the version + * string in the main file "upnp.c" as well to avoid errors with the makefile */ +#define PLUGIN_VERSION_MAJOR 0 +#define PLUGIN_VERSION_MINOR 0 +#define PLUGIN_VERSION_MICRO 1 +/* The plugin version as dot-separated string */ +#define PLUGIN_VERSION VERSION_STR(PLUGIN_VERSION_MAJOR, \ + PLUGIN_VERSION_MINOR, \ + PLUGIN_VERSION_MICRO) +/* The plugin version as integer representation */ +#define PLUGIN_VERSION_INT VERSION_INT(PLUGIN_VERSION_MAJOR, \ + PLUGIN_VERSION_MINOR, \ + PLUGIN_VERSION_MICRO) + +/**************************************************** + * + * 1.2 Logging + * + ****************************************************/ + +/** + * Log errors + * + * Errors are critical problems which cannot handled by the server and needs + * the help by the user. + */ +#define ERROR(s...) esyslog("UPnP server error:" s) +/** + * Log warnings + * + * Warnings indicate problems with the server which can be handled + * by the server itself or are not critical to the servers functionality + */ +#define WARNING(s...) isyslog("UPnP server warning: " s) +/** + * Log messages + * + * Messages are additional information about the servers behavior. This will + * be useful for debugging. + */ +#ifdef DEBUG +#define MESSAGE(s...) message(__FILE__, __LINE__, "UPnP server message: " s) +#else +#define MESSAGE(s...) dsyslog("UPnP server message: " s) +#endif + +/**************************************************** + * + * 1.3 Plugin constants + * + ****************************************************/ + +/* The authors of the plugin */ +#define PLUGIN_AUTHORS "Andreas Günther, Denis Loh" +/* The web site of the plugin */ +#define PLUGIN_WEB_PAGE "http://upnp.methodus.de" +/* A small discription of the plugin, which is also used as the device description */ +#define PLUGIN_DESCRIPTION "UPnP/DLNA compliant Media Server functionality for VDR" +/* The short plugin name. This is used as the main menu of VDR */ +#define PLUGIN_SHORT_NAME "DLNA/UPnP" +/* A somewhat longer name, a.k.a device name */ +#define PLUGIN_NAME "VDR DLNA/UPnP Media Server" +/* Where the plugin can be downloaded */ +#define PLUGIN_DOWNLOAD_PAGE PLUGIN_WEB_PAGE + +/**************************************************** + * + * 1.4 Plugin setup + * + ****************************************************/ + +#define SETUP_SERVER_ENABLED "ServerEnabled" +#define SETUP_SERVER_INT "ServerInt" +#define SETUP_SERVER_PORT "ServerPort" +#define SETUP_SERVER_AUTO "ServerAutoDetect" +#define SETUP_SERVER_ADDRESS "ServerAddress" + +/* The server port range where the server interacts with clients */ +#define SERVER_MIN_PORT 49152 +#define SERVER_MAX_PORT 65535 + +#define RECEIVER_LIVEBUFFER_SIZE MB(1) +#define RECEIVER_OUTPUTBUFFER_SIZE MB(1) +#define RECEIVER_RINGBUFFER_MARGIN 10*TS_SIZE + +/**************************************************** + * + * 2. UPnP + * + ****************************************************/ + +/*The maximum size of the device description file + *must NOT exceed 20KB including HTTP headers + */ +#define UPNP_DEVICE_DESCRIPTION_MAX_LEN KB(20) +/* The maximum size of the SOAP requests */ +#define UPNP_SOAP_MAX_LEN KB(20) +/* The max age of announcements in seconds */ +#define UPNP_ANNOUNCE_MAX_AGE 1800 +/* Max resources per object including + * preview images and thumbnails + */ +#define UPNP_MAX_RESOURCES_PER_OBJECT 16 + +enum UPNP_RESOURCE_TYPES { + UPNP_RESOURCE_CHANNEL, + UPNP_RESOURCE_RECORDING, + UPNP_RESOURCE_FILE, + UPNP_RESOURCE_URL +}; + +/**************************************************** + * + * 2.1 Namespaces + * + ****************************************************/ + +#define UPNP_XMLNS_UPNP "urn:schemas-upnp-org:metadata-1-0/upnp/" +#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite" +#define UPNP_XMLNS_DLNA_META "urn:schemas-dlna-org:metadata-1-0/" +#define UPNP_XMLNS_UPNP_DEV "urn:schemas-upnp-org:device-1-0" +#define UPNP_XMLNS_DLNA_DEV "urn:schemas-dlna-org:device-1-0" +#define UPNP_XMLNS_DUBLINCORE "http://purl.org/dc/elements/1.1/" + +#define UPNP_XMLNS_PREFIX_UPNP "upnp" +#define UPNP_XMLNS_PREFIX_DC "dc" +#define UPNP_XMLNS_PREFIX_DIDL "" +#define UPNP_XMLNS_PREFIX_DLNA "dlna" + +/**************************************************** + * + * 2.2 Directory hierarchy + * + ****************************************************/ + +#define UPNP_DIR_CONTROL "/control" +#define UPNP_DIR_EVENT "/event" +#define UPNP_DIR_XML "/xml" +#define UPNP_DIR_SHARES "/shares" +#define UPNP_DIR_PRESENTATION "/web" +#define UPNP_DIR_ICONS "/icons" + +/**************************************************** + * + * 2.3 internal webserver + * + ****************************************************/ + +#define UPNP_WEB_PRESENTATION_URL "/index.html" +#define UPNP_WEB_SERVER_ROOT_DIR UPNP_DIR_PRESENTATION + +enum UPNP_WEB_METHODS { + UPNP_WEB_METHOD_BROWSE, + UPNP_WEB_METHOD_SHOW, + UPNP_WEB_METHOD_STREAM, + UPNP_WEB_METHOD_SEARCH, + UPNP_WEB_METHOD_DOWNLOAD +}; + +/**************************************************** + * + * 2.4 Device description + * + ****************************************************/ + +/*The device type of the server*/ +#define UPNP_DEVICE_TYPE "urn:schemas-upnp-org:device:MediaServer:1" +/*Path to device description*/ +#define UPNP_DEVICE_DESCRIPTION_PATH UPNP_WEB_SERVER_ROOT_DIR "/ms_desc.xml" +/*Values to identify device and services*/ +#define UPNP_DEVICE_UDN "uuid:b120ba52-d88d-4500-9b64-888971d83fd3" +/* The friendly device name, human readable */ +#define UPNP_DEVICE_FRIENDLY_NAME PLUGIN_NAME +/* The guys who wrote the crap */ +#define UPNP_DEVICE_MANUFACTURER PLUGIN_AUTHORS +/* The website of the manufacturer, in this case the plugin website */ +#define UPNP_DEVICE_MANUFACTURER_URL PLUGIN_WEB_PAGE +/* There is just the one and only model of the plugin, the plugin itself */ +#define UPNP_DEVICE_MODEL_DESCRIPTION PLUGIN_DESCRIPTION +/* The plugin name... */ +#define UPNP_DEVICE_MODEL_NAME PLUGIN_NAME +/* The plugin version */ +#define UPNP_DEVICE_MODEL_NUMBER PLUGIN_VERSION +/* The website of the plugin, this might be different to the manufactures homepage + * and should redirect to a download mirror where the plugin can be obtained. + */ +#define UPNP_DEVICE_MODEL_URL PLUGIN_DOWNLOAD_PAGE +/* The serial number of the plugin. This is the integer value of the version */ +#define UPNP_DEVICE_SERIAL_NUMBER "VDR_DLNAUPNP_" PLUGIN_VERSION + +#define UPNP_DEVICE_ICON_JPEG_SM UPNP_DIR_ICONS "/upnpIconSm.jpeg" +#define UPNP_DEVICE_ICON_JPEG_LRG UPNP_DIR_ICONS "/upnpIconLrg.jpeg" +#define UPNP_DEVICE_ICON_PNG_SM UPNP_DIR_ICONS "/upnpIconSm.png" +#define UPNP_DEVICE_ICON_PNG_LRG UPNP_DIR_ICONS "/upnpIconLrg.png" + +/**************************************************** + * + * 2.5 DIDL Properties + * + ****************************************************/ + +#define UPNP_OBJECT_ITEM "item" +#define UPNP_OBJECT_CONTAINER "container" + +#define UPNP_PROP_OBJECTID "@id" +#define UPNP_PROP_PARENTID "@parentID" +#define UPNP_PROP_TITLE "dc:title" +#define UPNP_PROP_CREATOR "dc:creator" +#define UPNP_PROP_RESTRICTED "@restricted" +#define UPNP_PROP_WRITESTATUS "upnp:writeStatus" +#define UPNP_PROP_CLASS "upnp:class" +#define UPNP_PROP_CLASSNAME UPNP_PROP_CLASS "@name" +#define UPNP_PROP_SEARCHCLASS "upnp:searchClass" +#define UPNP_PROP_SCLASSDERIVED UPNP_PROP_SEARCHCLASS "@includeDerived" +#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID" +#define UPNP_PROP_SCLASSNAME UPNP_PROP_SEARCHCLASS "@name" +#define UPNP_PROP_SEARCHABLE UPNP_OBJECT_CONTAINER "@searchable" +#define UPNP_PROP_CHILDCOUNT UPNP_OBJECT_CONTAINER "@childcount" +#define UPNP_PROP_RESOURCE "res" +#define UPNP_PROP_PROTOCOLINFO UPNP_PROP_RESOURCE "@protocolInfo" +#define UPNP_PROP_SIZE UPNP_PROP_RESOURCE "@size" +#define UPNP_PROP_DURATION UPNP_PROP_RESOURCE "@duration" +#define UPNP_PROP_BITRATE UPNP_PROP_RESOURCE "@bitrate" +#define UPNP_PROP_SAMPLEFREQUENCE UPNP_PROP_RESOURCE "@sampleFreq" +#define UPNP_PROP_BITSPERSAMPLE UPNP_PROP_RESOURCE "@bitsPerSample" +#define UPNP_PROP_NOAUDIOCHANNELS UPNP_PROP_RESOURCE "@nrAudioChannels" +#define UPNP_PROP_COLORDEPTH UPNP_PROP_RESOURCE "@colorDepth" +#define UPNP_PROP_RESOLUTION UPNP_PROP_RESOURCE "@resolution" +#define UPNP_PROP_GENRE "upnp:genre" +#define UPNP_PROP_LONGDESCRIPTION "upnp:longDescription" +#define UPNP_PROP_PRODUCER "upnp:producer" +#define UPNP_PROP_RATING "upnp:rating" +#define UPNP_PROP_ACTOR "upnp:actor" +#define UPNP_PROP_DIRECTOR "upnp:director" +#define UPNP_PROP_DESCRIPTION "dc:description" +#define UPNP_PROP_PUBLISHER "dc:publisher" +#define UPNP_PROP_LANGUAGE "dc:language" +#define UPNP_PROP_RELATION "dc:relation" +#define UPNP_PROP_STORAGEMEDIUM "upnp:storageMedium" +#define UPNP_PROP_DVDREGIONCODE "upnp:DVDRegionCode" +#define UPNP_PROP_CHANNELNAME "upnp:channelName" +#define UPNP_PROP_SCHEDULEDSTARTTIME "upnp:scheduledStartTime" +#define UPNP_PROP_SCHEDULEDENDTIME "upnp:scheduledEndTime" +#define UPNP_PROP_ICON "upnp:icon" +#define UPNP_PROP_REGION "upnp:region" +#define UPNP_PROP_CHANNELNR "upnp:channelNr" +#define UPNP_PROP_RIGHTS "dc:rights" +#define UPNP_PROP_RADIOCALLSIGN "upnp:radioCallSign" +#define UPNP_PROP_RADIOSTATIONID "upnp:radioStationID" +#define UPNP_PROP_RADIOBAND "upnp:radioBand" +#define UPNP_PROP_CONTRIBUTOR "dc:contributor" +#define UPNP_PROP_DATE "dc:date" +#define UPNP_PROP_ALBUM "upnp:album" +#define UPNP_PROP_ARTIST "upnp:artist" +#define UPNP_PROP_DLNA_CONTAINERTYPE "dlna:container" + +#define UPNP_DIDL_SKELETON "" + +/**************************************************** + * + * 2.6 Connection Manager Service (CMS) + * + ****************************************************/ + +/*Path to service description of conection manager service*/ +#define UPNP_CMS_SCPD_URL UPNP_DIR_XML "/cms_scpd.xml" +#define UPNP_CMS_CONTROL_URL UPNP_DIR_CONTROL "/cms_control" +#define UPNP_CMS_EVENT_URL UPNP_DIR_EVENT "/cms_event" +#define UPNP_CMS_SERVICE_ID "urn:upnp-org:serviceId:ConnectionManager" +#define UPNP_CMS_SERVICE_TYPE "urn:schemas-upnp-org:service:ConnectionManager:1" + +/* Compatibility usage only --> See DLNA Profiles */ +#define UPNP_CMS_SUPPORTED_PROTOCOLS "http-get:*:video/mpeg:*," \ + "http-get:*:audio/mpeg:*" + +/**************************************************** + * + * The UPnP CMS actions + * + * This constant definitions represent all actions + * compliant with UPnP ConnectionManager:1 + * + ****************************************************/ + +#define UPNP_CMS_ACTION_GETPROTOCOLINFO "GetProtocolInfo" +#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONIDS "GetCurrentConnectionIDs" +#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONINFO "GetCurrentConnectionInfo" +#define UPNP_CMS_ACTION_PREPAREFORCONNECTION "PrepareForConnection" +#define UPNP_CMS_ACTION_CONNECTIONCOMPLETE "ConnectionComplete" + +/**************************************************** + * + * 2.7 Content Directory Service (CDS) + * + ****************************************************/ + +/*Path to service description of content directory service*/ +#define UPNP_CDS_SCPD_URL UPNP_DIR_XML "/cds_scpd.xml" +#define UPNP_CDS_CONTROL_URL UPNP_DIR_CONTROL "/cds_control" +#define UPNP_CDS_EVENT_URL UPNP_DIR_EVENT "/cds_event" +#define UPNP_CDS_SERVICE_ID "urn:upnp-org:serviceId:ContentDirectory" +#define UPNP_CDS_SERVICE_TYPE "urn:schemas-upnp-org:service:ContentDirectory:1" + +#define UPNP_CDS_SEARCH_CAPABILITIES "" +#define UPNP_CDS_SORT_CAPABILITIES UPNP_PROP_TITLE ","\ + UPNP_PROP_CREATOR ","\ + UPNP_PROP_WRITESTATUS ","\ + UPNP_PROP_DESCRIPTION ","\ + UPNP_PROP_GENRE ","\ + UPNP_PROP_LONGDESCRIPTION ","\ + UPNP_PROP_PUBLISHER + +/**************************************************** + * + * The UPnP CDS actions + * + * This constant definitions represent all actions + * compliant with UPnP ContentDirectory:1 + * + ****************************************************/ + +#define UPNP_CDS_ACTION_SEARCHCAPABILITIES "GetSearchCapabilities" +#define UPNP_CDS_ACTION_SORTCAPABILITIES "GetSortCapabilities" +#define UPNP_CDS_ACTION_SYSTEMUPDATEID "GetSystemUpdateID" +#define UPNP_CDS_ACTION_BROWSE "Browse" +#define UPNP_CDS_ACTION_SEARCH "Search" +#define UPNP_CDS_ACTION_CREATEOBJECT "CreateObject" +#define UPNP_CDS_ACTION_DESTROYOBJECT "DestroyObject" +#define UPNP_CDS_ACTION_UPDATEOBJECT "UpdateObject" +#define UPNP_CDS_ACTION_IMPORTRESOURCE "ImportResource" +#define UPNP_CDS_ACTION_EXPORTRESOURCE "ExportResource" +#define UPNP_CDS_ACTION_STOPTRANSFERRES "StopTransferResource" +#define UPNP_CDS_ACTION_TRANSFERPROGRESS "GetTransferProgress" +#define UPNP_CDS_ACTION_DELETERESOURCE "DeleteResource" +#define UPNP_CDS_ACTION_CREATEREFERENCE "CreateReference" + +/**************************************************** + * + * 2.8 UPnP AV Transport (AVT) + * + ****************************************************/ + +#define UPNP_AVT_SCPD_URL UPNP_DIR_XML "/avt_scpd.xml" +#define UPNP_AVT_CONTROL_URL UPNP_DIR_CONTROL "/avt_control" +#define UPNP_AVT_EVENT_URL UPNP_DIR_EVENT "/avt_event" +#define UPNP_AVT_SERVICE_ID "urn:upnp-org:serviceID:AVTransport" +#define UPNP_AVT_SERVICE_TYPE "urn:schemas-upnp-org:service:AVTransport:1" + +/**************************************************** + * + * The UPnP AVT actions + * + * This constant definitions represent all actions + * compliant with UPnP AVTransport:1 + * + ****************************************************/ + +/**************************************************** + * + * 2.9 Media classes + * + ****************************************************/ + +#define UPNP_CLASS_OBJECT "object" +#define UPNP_CLASS_ITEM UPNP_CLASS_OBJECT "." "item" +#define UPNP_CLASS_CONTAINER UPNP_CLASS_OBJECT "." "container" +#define UPNP_CLASS_IMAGE UPNP_CLASS_ITEM "." "imageItem" +#define UPNP_CLASS_AUDIO UPNP_CLASS_ITEM "." "audioItem" +#define UPNP_CLASS_VIDEO UPNP_CLASS_ITEM "." "videoItem" +#define UPNP_CLASS_PLAYLIST UPNP_CLASS_ITEM "." "playlistItem" +#define UPNP_CLASS_TEXT UPNP_CLASS_ITEM "." "textItem" +#define UPNP_CLASS_PHOTO UPNP_CLASS_IMAGE "." "photo" +#define UPNP_CLASS_MUSICTRACK UPNP_CLASS_AUDIO "." "musikTrack" +#define UPNP_CLASS_AUDIOBC UPNP_CLASS_AUDIO "." "audioBroadcast" +#define UPNP_CLASS_AUDIOBOOK UPNP_CLASS_AUDIO "." "audioBook" +#define UPNP_CLASS_MOVIE UPNP_CLASS_VIDEO "." "movie" +#define UPNP_CLASS_VIDEOBC UPNP_CLASS_VIDEO "." "videoBroadcast" +#define UPNP_CLASS_MUSICVIDCLIP UPNP_CLASS_VIDEO "." "musicVideoClip" +#define UPNP_CLASS_PERSON UPNP_CLASS_CONTAINER "." "person" +#define UPNP_CLASS_PLAYLISTCONT UPNP_CLASS_CONTAINER "." "playlistContainer" +#define UPNP_CLASS_ALBUM UPNP_CLASS_CONTAINER "." "album" +#define UPNP_CLASS_GENRE UPNP_CLASS_CONTAINER "." "genre" +#define UPNP_CLASS_STORAGESYS UPNP_CLASS_CONTAINER "." "storageSystem" +#define UPNP_CLASS_STORAGEVOL UPNP_CLASS_CONTAINER "." "storageVolume" +#define UPNP_CLASS_STORAGEFOLD UPNP_CLASS_CONTAINER "." "storageFolder" +#define UPNP_CLASS_MUSICARTIST UPNP_CLASS_PERSON "." "musicArtist" +#define UPNP_CLASS_MUSICALBUM UPNP_CLASS_ALBUM "." "musicAlbum" +#define UPNP_CLASS_PHOTOALBUM UPNP_CLASS_ALBUM "." "photoAlbum" +#define UPNP_CLASS_MUSICGENRE UPNP_CLASS_GENRE "." "musicGenre" +#define UPNP_CLASS_MOVIEGENRE UPNP_CLASS_GENRE "." "movieGenre" + +/**************************************************** + * + * 2.10 Storage media + * + ****************************************************/ + +enum UPnPStorageMedia { + SM_UNKNOWN, + SM_DV, + SM_MINI_DV, + SM_VHS, + SM_W_VHS, + SM_S_VHS, + SM_D_VHS, + SM_VHSC, + SM_VIDEO8, + SM_HI8, + SM_CD_ROM, + SM_CD_DA, + SM_CD_R, + SM_CD_RW, + SM_VIDEO_CD, + SM_SACD, + SM_MD_AUDIO, + SM_MD_PICTURE, + SM_DVD_ROM, + SM_DVD_VIDEO, + SM_DVD_R_MINUS, + SM_DVD_RW_PLUS, + SM_DVD_RW_MINUS, + SM_DVD_RAM, + SM_DVD_AUDIO, + SM_DAT, + SM_LD, + SM_HDD, + SM_MICRO_MV, + SM_NETWORK, + SM_NONE +}; + +/**************************************************** + * + * 2.11 Known Errors + * + ****************************************************/ + +/* Errors 401-404, 501 are already defined in + * Intel SDK, however 403 MUST NOT USED. + */ + +/****** 600 Common Action Errors ******/ + +#define UPNP_SOAP_E_ARGUMENT_INVALID 600 +#define UPNP_SOAP_E_ARGUMENT_OUT_OF_RANGE 601 +#define UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED 602 +#define UPNP_SOAP_E_OUT_OF_MEMORY 603 +#define UPNP_SOAP_E_HUMAN_INTERVENTION 604 +#define UPNP_SOAP_E_STRING_TO_LONG 605 +#define UPNP_SOAP_E_NOT_AUTHORIZED 606 +#define UPNP_SOAP_E_SIGNATURE_FAILURE 607 +#define UPNP_SOAP_E_SIGNATURE_MISSING 608 +#define UPNP_SOAP_E_NOT_ENCRYPTED 609 +#define UPNP_SOAP_E_INVALID_SEQUENCE 610 +#define UPNP_SOAP_E_INVALID_CONTROL_URL 611 +#define UPNP_SOAP_E_NO_SUCH_SESSION 612 + +/****** 700 Action specific Errors ******/ + +#define UPNP_CDS_E_NO_SUCH_OBJECT 701 +#define UPNP_CDS_E_INVALID_CURRENT_TAG 702 +#define UPNP_CDS_E_INVALID_NEW_TAG 703 +#define UPNP_CDS_E_REQUIRED_TAG 704 +#define UPNP_CDS_E_READ_ONLY_TAG 705 +#define UPNP_CDS_E_PARAMETER_MISMATCH 706 +#define UPNP_CDS_E_INVALID_SEARCH_CRITERIA 708 +#define UPNP_CDS_E_INVALID_SORT_CRITERIA 709 +#define UPNP_CDS_E_NO_SUCH_CONTAINER 710 +#define UPNP_CDS_E_RESTRICTED_OBJECT 711 +#define UPNP_CDS_E_BAD_METADATA 712 +#define UPNP_CDS_E_RESTRICTED_PARENT 713 +#define UPNP_CDS_E_NO_SUCH_SOURCE_RESOURCE 714 +#define UPNP_CDS_E_RESOURCE_ACCESS_DENIED 715 +#define UPNP_CDS_E_TRANSFER_BUSY 716 +#define UPNP_CDS_E_NO_SUCH_FILE_TRANSFER 717 +#define UPNP_CDS_E_NO_SUCH_DESTINATION_RESOURCE 718 +#define UPNP_CDS_E_DEST_RESOURCE_ACCESS_DENIED 719 +#define UPNP_CDS_E_CANT_PROCESS_REQUEST 720 + +#define UPNP_CMS_E_INCOMPATIBLE_PROTOCOL_INFO 701 +#define UPNP_CMS_E_INCOMPATIBLE_DIRECTIONS 702 +#define UPNP_CMS_E_INSUFFICIENT_RESOURCES 703 +#define UPNP_CMS_E_LOCAL_RESTRICTIONS 704 +#define UPNP_CMS_E_ACCESS_DENIED 705 +#define UPNP_CMS_E_INVALID_CONNECTION_REFERENCE 706 +#define UPNP_CMS_E_NOT_IN_NETWORK 707 + +/**************************************************** + * + * 2.12 Write Status + * + ****************************************************/ + +enum UPnPWriteStatus { + WS_UNKNOWN=0, + WS_WRITABLE, + WS_PROTECTED, + WS_NOT_WRITABLE, + WS_MIXED +}; + +/**************************************************** + * + * 3. DLNA + * + ****************************************************/ + +#define DLNA_PROTOCOL_VERSION_MAJOR 1 +#define DLNA_PROTOCOL_VERSION_MINOR 5 +#define DLNA_PROTOCOL_VERSION_MICRO 0 + +#define DLNA_PROTOCOL_VERSION_INT VERSION_INT(DLNA_PROTOCOL_VERSION_MAJOR, \ + DLNA_PROTOCOL_VERSION_MINOR, \ + DLNA_PROTOCOL_VERSION_MICRO) + +#define DLNA_PROTOCOL_VERSION_STR VERSION_STR(DLNA_PROTOCOL_VERSION_MAJOR, \ + DLNA_PROTOCOL_VERSION_MINOR, \ + DLNA_PROTOCOL_VERSION_MICRO) + +/**************************************************** + * + * 3.1 Protocol info fields + * + ****************************************************/ + +/** + * ATTENTION + * + * The following operation field assumes that s0 is NOT changing. Only changes to sN are permitted. + * If s0 and/or sN changes these fields must be set to false. Use DLNA_FLAG_*_BASED_SEEK flags instead. + */ +#define DLNA_OPERATION_NONE 00 // No seek operations supported +#define DLNA_OPERATION_TIME_SEEK_RANGE 10 // is the server supporting time based seeks? +#define DLNA_OPERATION_RANGE 01 // or byte based seeks? + +#define DLNA_CONVERSION_TRANSCODED 1 // the content was converted from one media format to another +#define DLNA_CONVERSION_NONE 0 // the content is available without conversion + +#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; // 1 is required, but omited in the PS parameter + +#define DLNA_TRANSFER_PROTOCOL_HTTP 1 // use http tranfer +#define DLNA_TRANSFER_PROTOCOL_RTP 2 // use rtp tranfer + +/**************************************************** + * + * 3.2 Protocol info flags + * + ****************************************************/ + +#define DLNA_FLAG_SENDER_PACED 1 << 31 // is the server setting the pace (i.e. RTP)? +#define DLNA_FLAG_TIME_BASED_SEEK 1 << 30 // is the server supporting time based seeks? +#define DLNA_FLAG_BYTE_BASED_SEEK 1 << 29 // or byte based seeking? +#define DLNA_FLAG_PLAY_CONTAINER 1 << 28 // is it possible to play all contents of a container? +#define DLNA_FLAG_S0_INCREASE 1 << 27 // is the beginning changing (time shift)? +#define DLNA_FLAG_SN_INCREASE 1 << 26 // is the end changing (live-TV)? +#define DLNA_FLAG_RTSP_PAUSE 1 << 25 // is pausing rtp streams permitted? +#define DLNA_FLAG_STREAMING_TRANSFER 1 << 24 // is the transfer a stream (Audio/AV)? +#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 << 23 // is the transfer interactiv (printings)? +#define DLNA_FLAG_BACKGROUND_TRANSFER 1 << 22 // is the tranfer done in background (downloaded)? +#define DLNA_FLAG_CONNECTION_STALLING 1 << 21 // can the connection be paused on HTTP streams? +#define DLNA_FLAG_VERSION_1_5 1 << 20 // does the server complies with DLNA V1.5 +#define DLNA_FLAG_CLEARTEXT_CONTENT 1 << 16 // (Link Protection) currently not used +#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 // (Link Protection) currently not used +#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 // (Link Protection) currently not used + +#define DLNA_FLAGS_PLUGIN_SUPPORT DLNA_FLAG_BYTE_BASED_SEEK | \ + DLNA_FLAG_SN_INCREASE | \ + DLNA_FLAG_STREAMING_TRANSFER | \ + DLNA_FLAG_BACKGROUND_TRANSFER | \ + DLNA_FLAG_CONNECTION_STALLING | \ + DLNA_FLAG_VERSION_1_5 + +/**************************************************** + * + * 3.3 Media profiles + * + ****************************************************/ + +/** + * 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; + const char* mime; +}; + +struct DLNAIconProfile { + const char* mime; + unsigned short width; + unsigned short height; + unsigned char bitDepth; +}; + +/* Images */ +/* Audio */ +extern DLNAProfile DLNA_PROFILE_MPEG1_L3; // MP3 +/* Video */ +extern DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU; // This is the profile for DVB-TV +extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; // This is the profile for DVB-TV + +/* Icons */ +extern DLNAIconProfile DLNA_ICON_JPEG_SM_24; +extern DLNAIconProfile DLNA_ICON_JPEG_LRG_24; +extern DLNAIconProfile DLNA_ICON_PNG_SM_24A; +extern DLNAIconProfile DLNA_ICON_PNG_LRG_24A; + +/**************************************************** + * + * 3.4 Container types + * + ****************************************************/ + +enum DLNAContainerTypes { + TUNER_1_0 +}; + +#define DLNA_CONTAINER_TUNER "Tuner_1_0" // The DLNA container type for a tuner + +/**************************************************** + * + * 3.5 Device types + * + ****************************************************/ + +#define DLNA_DEVICE_DMS_1_0 "DMS-1.00" +#define DLNA_DEVICE_DMS_1_5 "DMS-1.50" + +/**************************************************** + * + * 4. SQLite + * + ****************************************************/ +/**************************************************** + * + * 4.1 Database setup + * + ****************************************************/ + +#define SQLITE_DB_FILE "metadata.db" + +/**************************************************** + * + * Please see database.h for further definitions, + * SQL statements and triggers + * + ****************************************************/ + +#endif /* _COMMON_H */ + diff --git a/database/database.cpp b/database/database.cpp new file mode 100644 index 0000000..22c41cd --- /dev/null +++ b/database/database.cpp @@ -0,0 +1,274 @@ +/* + * File: database.h + * Author: savop + * + * Created on 3. September 2009, 22:20 + */ + +#include +#include +#include +#include "database.h" +#include "../common.h" +#include "object.h" +#include "../upnp.h" + +cSQLiteDatabase* cSQLiteDatabase::mInstance = NULL; + +cSQLiteDatabase::cSQLiteDatabase(){ + this->mActiveTransaction = false; + this->mDatabase = NULL; + this->mLastRow = NULL; + this->mRows = NULL; +} + +cSQLiteDatabase::~cSQLiteDatabase(){ + sqlite3_close(this->mDatabase); +} + +cSQLiteDatabase* cSQLiteDatabase::getInstance(){ + if(cSQLiteDatabase::mInstance == NULL){ + cSQLiteDatabase::mInstance = new cSQLiteDatabase; + DatabaseLocker.Wait(); + cSQLiteDatabase::mInstance->initialize(); + } + + if(cSQLiteDatabase::mInstance != NULL) + return cSQLiteDatabase::mInstance; + else + return NULL; +} + +int cSQLiteDatabase::execStatement(const char* Statement){ + char* Error; + if(!this->mDatabase){ + ERROR("Database not open. Cannot continue"); + return -1; + } + this->mRows = new cRows; +#ifdef SQLITE_PRINT_STATEMENTS + MESSAGE("SQLite: %s", Statement); +#endif + if(sqlite3_exec(this->mDatabase, Statement, cSQLiteDatabase::getResultRow, (cSQLiteDatabase*)this, &Error)!=SQLITE_OK){ + ERROR("Database error: %s", Error); + ERROR("Statement was: %s", Statement); + sqlite3_free(Error); + return -1; + } + + sqlite3_free(Error); + return 0; +} + +int cSQLiteDatabase::getResultRow(void* DB, int NumCols, char** Values, char** ColNames){ + cRow* Row = new cRow; + Row->ColCount = NumCols; + Row->Columns = new char*[NumCols]; + Row->Values = new char*[NumCols]; + for(int i=0; i < NumCols; i++){ + Row->Columns[i] = strdup0(ColNames[i]); + Row->Values[i] = strdup0(Values[i]); + } + cSQLiteDatabase* Database = (cSQLiteDatabase*)DB; + Database->mRows->Add(Row); + return 0; +} + +cRows::cRows(){ + this->mLastRow = NULL; +} + +cRows::~cRows(){ + this->mLastRow = NULL; +} + +bool cRows::fetchRow(cRow** Row){ + if(this->mLastRow==NULL){ + this->mLastRow = this->First(); + } + else { + this->mLastRow = this->Next(this->mLastRow); + } + if(this->mLastRow != NULL){ + *Row = this->mLastRow; + return true; + } + else { + *Row = NULL; + return false; + } + return false; +} + +cRow::cRow(){ + this->currentCol = 0; + this->ColCount = 0; + this->Columns = NULL; + this->Values = NULL; +} + +cRow::~cRow(){ + for(int i=0;iColCount;i++){ + delete Columns[i]; + delete Values[i]; + } + this->Columns = NULL; + this->Values = NULL; +} + +bool cRow::fetchColumn(cString* Column, cString* Value){ + char *Col, *Val; + bool ret = this->fetchColumn(&Col, &Val); + if(ret){ + *Column = cString(Col,true); + *Value = cString(Val,true); + } + return ret; +} + +bool cRow::fetchColumn(char** Column, char** Value){ + if(currentCol>=this->ColCount){ + return false; + } + #ifdef SQLITE_PRINT_FETCHES + MESSAGE("Fetching column %s='%s' (%d/%d)", this->Columns[currentCol], this->Values[currentCol], currentCol+1, this->ColCount); + #endif + *Column = strdup0(this->Columns[currentCol]); + *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup0(this->Values[currentCol]):NULL; + currentCol++; + return true; +} + +int cSQLiteDatabase::initialize(){ + int ret; + cString File = cString::sprintf("%s/%s", cPluginUpnp::getConfigDirectory(), SQLITE_DB_FILE); + if((ret = sqlite3_open(File, &this->mDatabase))){ + ERROR("Unable to open database file %s (Error code: %d)!", *File, ret); + sqlite3_close(this->mDatabase); + return -1; + } + MESSAGE("Database file %s opened.", *File); + if(this->initializeTables()){ + ERROR("Error while creating tables"); + return -1; + } + else if(this->initializeTriggers()){ + ERROR("Error while setting triggers"); + return -1; + } + return 0; +} + +void cSQLiteDatabase::startTransaction(){ + if(this->mActiveTransaction){ + if(this->mAutoCommit){ + this->commitTransaction(); + } + else { + this->rollbackTransaction(); + } + } + this->execStatement("BEGIN TRANSACTION"); + this->mActiveTransaction = true; +} + +void cSQLiteDatabase::commitTransaction(){ + this->execStatement("COMMIT TRANSACTION"); + this->mActiveTransaction = false; +} + +void cSQLiteDatabase::rollbackTransaction(){ + this->execStatement("ROLLBACK TRANSACTION"); + this->mActiveTransaction = false; +} + +int cSQLiteDatabase::initializeTables(){ + int ret = 0; + this->startTransaction(); + if(this->execStatement(SQLITE_CREATE_TABLE_SYSTEM)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_PRIMARY_KEYS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_ALBUMS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_AUDIOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_AUDIOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_CONTAINER)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_IMAGEITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_MOVIES)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_OBJECTS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_PHOTOS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_PLAYLISTS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_RESOURCES)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_SEARCHCLASS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_VIDEOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_CREATE_TABLE_VIDEOITEMS)==-1) ret = -1; + if(ret){ + this->rollbackTransaction(); + } + else { + this->commitTransaction(); + } + return ret; +} + +int cSQLiteDatabase::initializeTriggers(){ + int ret = 0; + this->startTransaction(); + if(this->execStatement(SQLITE_TRIGGER_UPDATE_SYSTEM)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_UPDATE_OBJECTID)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_ALBUMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_PLAYLISTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_IMAGEITEMS_PHOTOS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_AUDIOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_IMAGEITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_VIDEOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_OBJECTS_OBJECTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_CONTAINERS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_RESOURCES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_VIDEOITEMS_MOVIES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_D_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_ALBUMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_PLAYLISTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_IMAGEITEMS_PHOTOS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_AUDIOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_IMAGEITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_VIDEOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_OBJECTS_OBJECTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_CONTAINERS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_RESOURCES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_VIDEOITEMS_MOVIES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_I_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_ALBUMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_PLAYLISTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_IMAGEITEMS_PHOTOS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_AUDIOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_IMAGEITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_VIDEOITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_OBJECTS_OBJECTS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_CONTAINERS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_ITEMS)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_RESOURCES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_VIDEOITEMS_MOVIES)==-1) ret = -1; + if(this->execStatement(SQLITE_TRIGGER_U_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; + if(ret){ + this->rollbackTransaction(); + } + else { + this->commitTransaction(); + } + return ret; +} + +long cSQLiteDatabase::getLastInsertRowID() const { + return (long)sqlite3_last_insert_rowid(this->mDatabase); +} \ No newline at end of file diff --git a/database/database.h b/database/database.h new file mode 100644 index 0000000..fe91f2b --- /dev/null +++ b/database/database.h @@ -0,0 +1,834 @@ +/* + * File: database.h + * Author: savop + * + * Created on 3. September 2009, 22:20 + */ + +#ifndef _DATABASE_H +#define _DATABASE_H + +#include +#include +#include "../common.h" + +//#define SQLITE_PRINT_STATEMENTS +//#define SQLITE_PRINT_FETCHES +#define SQLITE_CASCADE_DELETES + +#define PK_OBJECTS TOSTRING(1) +#define PK_RESOURCES TOSTRING(2) +#define PK_SEARCHCLASSES TOSTRING(3) + +#define SQLITE_FIRST_CUSTOMID TOSTRING(0) + +#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_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_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 " TableA " "\ + "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;" + + /**********************************************\ + * * + * 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) "\ + ") 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; + +class cRow : public cListObject { + friend class cSQLiteDatabase; +private: + int currentCol; + int ColCount; + char** Columns; + char** Values; + cRow(); +public: + virtual ~cRow(); + int Count(){ return this->ColCount; } + bool fetchColumn(cString* Column, cString* Value); + bool fetchColumn(char** Column, char** Value); +}; + +class cRows : public cList { + friend class cSQLiteDatabase; +private: + cRow* mLastRow; + cRows(); +public: + virtual ~cRows(); + bool fetchRow(cRow** Row); +}; + +class cSQLiteDatabase { +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); +public: + virtual ~cSQLiteDatabase(); + static cSQLiteDatabase* getInstance(); + int getResultCount() const { return this->mRows->Count(); } + long getLastInsertRowID() const; + cRows* getResultRows() const { return this->mRows; } + int execStatement(const char* Statement); + void startTransaction(); + void commitTransaction(); + void rollbackTransaction(); + void setAutoCommit(bool Commit=true){ this->mAutoCommit = Commit; } +}; + +#endif /* _DATABASE_H */ \ No newline at end of file diff --git a/database/metadata.cpp b/database/metadata.cpp new file mode 100644 index 0000000..ac19118 --- /dev/null +++ b/database/metadata.cpp @@ -0,0 +1,389 @@ +/* + * File: metadata.cpp + * Author: savop + * + * Created on 28. Mai 2009, 16:50 + */ + +#include +#include +#include +#include "object.h" +#include "resources.h" +#include "metadata.h" +#include "../common.h" +#include "../misc/search.h" +#include +#include +#include + +#define KEY_SYSTEM_UPDATE_ID "SystemUpdateID" + + /**********************************************\ + * * + * Media database * + * * + \**********************************************/ + +cMediaDatabase::cMediaDatabase(){ + this->mSystemUpdateID = 0; + this->mLastInsertObjectID = 0; + this->mDatabase = cSQLiteDatabase::getInstance(); + this->mObjects = new cHash; + this->mFactory = cUPnPObjectFactory::getInstance(); + this->mFactory->registerMediator(UPNP_CLASS_ITEM, new cUPnPItemMediator(this)); + this->mFactory->registerMediator(UPNP_CLASS_CONTAINER, new cUPnPContainerMediator(this)); + this->mFactory->registerMediator(UPNP_CLASS_VIDEO, new cUPnPVideoItemMediator(this)); + this->mFactory->registerMediator(UPNP_CLASS_VIDEOBC, new cUPnPVideoBroadcastMediator(this)); +} + +cMediaDatabase::~cMediaDatabase(){ + delete this->mDatabase; +} + +bool cMediaDatabase::init(){ + MESSAGE("Initializing..."); + if(this->prepareDatabase()){ + ERROR("Initializing of database failed."); + return false; + } + if(this->loadChannels()){ + ERROR("Loading channels failed"); + return false; + } + return true; +} + +void cMediaDatabase::updateSystemID(){ + cString Statement = cString::sprintf("INSERT OR REPLACE INTO %s (Key,Value) VALUES ('%s','%d')", + SQLITE_TABLE_SYSTEM, + KEY_SYSTEM_UPDATE_ID, + this->getSystemUpdateID()+1 + ); + this->mDatabase->execStatement(Statement); +} + +const char* cMediaDatabase::getContainerUpdateIDs(){ + return ""; +} + +unsigned int cMediaDatabase::getSystemUpdateID(){ + cString Statement = cString::sprintf("SELECT Value FROM %s WHERE Key='%s'", + SQLITE_TABLE_SYSTEM, + KEY_SYSTEM_UPDATE_ID + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return 0; + } + cRows* Rows = this->mDatabase->getResultRows(); + cRow* Row; + cString Column, Value; + if(!Rows->fetchRow(&Row)){ + ERROR("No rows found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, "Value")){ + this->mSystemUpdateID = (unsigned int)atoi(Value); + } + } + return this->mSystemUpdateID; +} + +cUPnPObjectID cMediaDatabase::getNextObjectID(){ + cString Statement, Column, Value; + const char* Format = "SELECT Key FROM %s WHERE KeyID=%s"; + Statement = cString::sprintf(Format, SQLITE_TABLE_PRIMARY_KEYS, PK_OBJECTS); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return 0; + } + cRows* Rows = this->mDatabase->getResultRows(); + cRow* Row; + if(!Rows->fetchRow(&Row)){ + ERROR("No rows found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, "Key")){ + this->mLastInsertObjectID = atoi(Value); + return this->mLastInsertObjectID; + } + } + delete Rows; + return 0; +} + +cUPnPClassObject* cMediaDatabase::getObjectByID(cUPnPObjectID ID){ + MESSAGE("Try to find Object with ID '%s'", *ID); + cUPnPClassObject* Object; + if((Object = this->mObjects->Get((unsigned int)ID))){ + MESSAGE("Found cached object with ID '%s'", *ID); + } + else if((Object = this->mFactory->getObject(ID))){ + //this->cacheObject(Object); + MESSAGE("Found object with ID '%s' in database", *ID); + } + else { + ERROR("No object with such ID '%s'", *ID); + return NULL; + } + return Object; +} + +void cMediaDatabase::cacheObject(cUPnPClassObject* Object){ + if(this->mObjects->Get((unsigned int)Object->getID())==NULL){ + MESSAGE("Added %s to cache.", *Object->getID()); + this->mObjects->Add(Object, (unsigned int)Object->getID()); + } +} + +int cMediaDatabase::prepareDatabase(){ + if(this->getObjectByID(0)==NULL){ + MESSAGE("Creating database structure"); + cUPnPClassContainer* Root = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _(PLUGIN_SHORT_NAME)); + Root->setID(0); + if(this->mFactory->saveObject(Root)) return -1; + + cClass VideoClass = { UPNP_CLASS_VIDEO, true }; + cClass AudioClass = { UPNP_CLASS_AUDIO, true }; + cClass VideoBCClass = { UPNP_CLASS_VIDEOBC, true }; + cClass AudioBCClass = { UPNP_CLASS_AUDIOBC, true }; + + cUPnPClassContainer* Video = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Video")); + Video->setID(1); + Root->addObject(Video); + Video->addSearchClass(VideoClass); + Video->setSearchable(true); + if(this->mFactory->saveObject(Video)) return -1; + + cUPnPClassContainer* Audio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Audio")); + Audio->setID(2); + Root->addObject(Audio); + Audio->addSearchClass(AudioClass); + Audio->setSearchable(true); + if(this->mFactory->saveObject(Audio)) return -1; + + cUPnPClassContainer* TV = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("TV")); + TV->setID(3); + TV->setContainerType(DLNA_CONTAINER_TUNER); + TV->setSearchable(true); + TV->addSearchClass(VideoBCClass); + Video->addObject(TV); + if(this->mFactory->saveObject(TV)) return -1; + + cUPnPClassContainer* Records = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Records")); + Records->setID(4); + Video->addObject(Records); + Records->addSearchClass(VideoClass); + Records->setSearchable(true); + if(this->mFactory->saveObject(Records)) return -1; + + cUPnPClassContainer* Radio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Radio")); + Radio->setID(5); + Audio->addObject(Radio); + Radio->addSearchClass(AudioBCClass); + Radio->setSearchable(true); + if(this->mFactory->saveObject(Radio)) return -1; + } + return 0; +} + +int cMediaDatabase::loadChannels(){ + MESSAGE("Loading channels from Database"); + cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); + if(TV){ + // Iterating channels + cList* List = TV->getObjectList(); + for(cChannel* Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)){ + bool inList = false; + for(cUPnPClassVideoBroadcast* Child = (cUPnPClassVideoBroadcast*)List->First(); + Child; + Child = (cUPnPClassVideoBroadcast*)List->Next(Child)){ + if(!strcasecmp(Child->getChannelName(),Channel->Name())){ inList = true; break; } + } + if(!inList){ + if(!Channel->GroupSep()){ + tChannelID ChannelID = Channel->GetChannelID(); + MESSAGE("Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); + cUPnPClassVideoBroadcast* ChannelItem; + ChannelItem = (cUPnPClassVideoBroadcast*)this->mFactory->createObject(UPNP_CLASS_VIDEOBC, Channel->Name()); + ChannelItem->setChannelName(Channel->Name()); + ChannelItem->setChannelNr(Channel->Number()); + // Set primary language of the stream + if(Channel->Alang(0)){ + ChannelItem->setLanguage(Channel->Alang(0)); + } + cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel); + TV->addObject(ChannelItem); + if(this->mFactory->saveObject(ChannelItem)) return -1; + } + else { + MESSAGE("Skipping group '%s'", Channel->Name()); + // Skip channel groups + // Channel groups may be supported theoretically. However, DLNA states that a tuner needs + // a consecutive list of channels. A simple work-around may be a virtual tuner for each group. + } + } + else { + MESSAGE("Skipping %s, already in database", Channel->Name()); + } + } + } + return 0; +} + +void cMediaDatabase::Action(){ + time_t LastEPGUpdate = 0; + while(this->Running()){ + + if(cSchedules::Modified() >= LastEPGUpdate){ + MESSAGE("Schedule changed. Updating..."); + updateChannelEPG(); + LastEPGUpdate = cSchedules::Modified(); + } + + cCondWait::SleepMs(60 * 1000); // sleep a minute + } +} + +void cMediaDatabase::updateChannelEPG(){ + cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); + if(TV){ + // Iterating channels + MESSAGE("Getting schedule..."); + cSchedulesLock SchedulesLock; + const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); + + cList* List = TV->getObjectList(); + MESSAGE("TV folder has %d items", List->Count()); + for(cUPnPClassVideoBroadcast* ChannelItem = (cUPnPClassVideoBroadcast*)List->First(); + ChannelItem; + ChannelItem = (cUPnPClassVideoBroadcast*)List->Next(ChannelItem) + ){ + MESSAGE("Find channel by number %d", ChannelItem->getChannelNr()); + cChannel* Channel = Channels.GetByNumber(ChannelItem->getChannelNr()); + MESSAGE("Found channel with ID %s", *Channel->GetChannelID().ToString()); + + const cSchedule* Schedule = Schedules->GetSchedule(Channel); + const cEvent* Event = Schedule?Schedule->GetPresentEvent():NULL; + if(Event){ + + time_t LastEPGChange = Event->StartTime(); + time_t LastObjectChange = ChannelItem->modified(); + + MESSAGE("Last event start: %s", ctime(&LastEPGChange)); + MESSAGE("Last object modification: %s", ctime(&LastObjectChange)); + if(LastEPGChange >= LastObjectChange){ + MESSAGE("Updating details"); + + if(Event){ + ChannelItem->setTitle(Event->Title()?Event->Title():Channel->Name()); + ChannelItem->setLongDescription(Event->Description()); + ChannelItem->setDescription(Event->ShortText()); + } + else { + ChannelItem->setTitle(Channel->Name()); + ChannelItem->setLongDescription(NULL); + ChannelItem->setDescription(NULL); + } + + this->mFactory->saveObject(ChannelItem); + } + else { + MESSAGE("Channel did not change"); + } + } + else { + MESSAGE("No EPG data"); + ChannelItem->setTitle(Channel->Name()); + ChannelItem->setLongDescription(NULL); + ChannelItem->setDescription(NULL); + } + } + } +} + +int cMediaDatabase::browse(cUPnPResultSet** Results, const char* ID, bool BrowseMetadata, const char* Filter, unsigned int Offset, unsigned int Count, const char* SortCriteria){ + *Results = new cUPnPResultSet; + (*Results)->mNumberReturned = 0; + (*Results)->mTotalMatches = 0; + (*Results)->mResult = NULL; + + MESSAGE("===== Browsing ====="); + MESSAGE("ID: %s", ID); + MESSAGE("Browse %s", BrowseMetadata?"metadata":"children"); + MESSAGE("Filter: %s", Filter); + MESSAGE("Offset: %d", Offset); + MESSAGE("Count: %d", Count); + MESSAGE("Sort: %s", SortCriteria); + + cUPnPObjectID ObjectID = atoi(ID); + + cStringList* FilterList = cFilterCriteria::parse(Filter); + cList* SortCriterias = cSortCriteria::parse(SortCriteria); + + if(!SortCriterias){ + return UPNP_CDS_E_INVALID_SORT_CRITERIA; + } + + cUPnPClassObject* Object = this->getObjectByID(ObjectID); + if(Object){ + IXML_Document* DIDLDoc = NULL; + if(ixmlParseBufferEx(UPNP_DIDL_SKELETON, &DIDLDoc)==IXML_SUCCESS){ + + IXML_Node* Root = ixmlNode_getFirstChild((IXML_Node*) DIDLDoc); + switch(BrowseMetadata){ + case true: + ixmlNode_appendChild(Root, Object->createDIDLFragment(DIDLDoc, FilterList)); + delete FilterList; + (*Results)->mNumberReturned = 1; + (*Results)->mTotalMatches = 1; + (*Results)->mResult = ixmlDocumenttoString(DIDLDoc); + ixmlDocument_free(DIDLDoc); + return UPNP_E_SUCCESS; + case false: + if(Object->isContainer()){ + cUPnPClassContainer* Container = Object->getContainer(); + (*Results)->mTotalMatches = Container->getChildCount(); + cUPnPObjects* Children = Container->getObjectList(); + + if(SortCriterias){ + for(cSortCrit* SortBy = SortCriterias->First(); SortBy ; SortBy = SortCriterias->Next(SortBy)){ + MESSAGE("Sorting by %s %s", SortBy->Property, SortBy->SortDescending?"ascending":"descending"); + Children->SortBy(SortBy->Property, SortBy->SortDescending); + } + } + + cUPnPClassObject* Child = Children->First(); + if(Count==0) Count = Container->getChildCount(); + while(Offset-- && (Child = Children->Next(Child))){} + for(; Count && Child ; Child = Children->Next(Child), Count--){ + MESSAGE("Appending %s to didl", Child->getTitle()); + ixmlNode_appendChild(Root, Child->createDIDLFragment(DIDLDoc, FilterList)); + (*Results)->mNumberReturned++; + } + delete FilterList; + delete SortCriterias; + } + else { + (*Results)->mNumberReturned = 0; + (*Results)->mTotalMatches = 0; + } + (*Results)->mResult = ixmlDocumenttoString(DIDLDoc); + ixmlDocument_free(DIDLDoc); + return UPNP_E_SUCCESS; + } + } + else { + ERROR("Unable to parse DIDL skeleton"); + return UPNP_CDS_E_CANT_PROCESS_REQUEST; + } + } + else { + ERROR("No such object: %s", ID); + return UPNP_CDS_E_NO_SUCH_OBJECT; // No such object; + } + return UPNP_SOAP_E_ACTION_FAILED; +} \ No newline at end of file diff --git a/database/metadata.h b/database/metadata.h new file mode 100644 index 0000000..32d663e --- /dev/null +++ b/database/metadata.h @@ -0,0 +1,60 @@ +/* + * File: metadata.h + * Author: savop + * + * Created on 28. Mai 2009, 21:14 + */ + +#ifndef _METADATA_H +#define _METADATA_H + +#include +#include +#include +#include "../common.h" +#include "database.h" +#include "object.h" +#include "resources.h" + +struct cUPnPResultSet { + int mNumberReturned; + int mTotalMatches; + const char* mResult; +}; + +struct cSearchCriteria { + const char* Property; + bool Descending; +}; + +class cMediaDatabase : public cThread { + friend class cUPnPServer; + friend class cUPnPObjectMediator; +private: + unsigned int mSystemUpdateID; + cUPnPObjectFactory* mFactory; + cHash* mObjects; + cSQLiteDatabase* mDatabase; + cUPnPObjectID mLastInsertObjectID; + cUPnPObjectID getNextObjectID(); + void cacheObject(cUPnPClassObject* Object); + int prepareDatabase(); + int loadChannels(); + int loadRecordings(); + void updateChannelEPG(); + void updateRecordings(); + bool init(); + void updateSystemID(); + virtual void Action(); +public: + unsigned int getSystemUpdateID(); + const char* getContainerUpdateIDs(); + cMediaDatabase(); + virtual ~cMediaDatabase(); + cUPnPClassObject* getObjectByID(cUPnPObjectID ID); + int browse(OUT cUPnPResultSet** Results, IN const char* ID, IN bool BrowseMetadata, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); + int search(OUT cUPnPResultSet** Results, IN const char* ID, IN const char* Search, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); +}; + +#endif /* _METADATA_H */ + diff --git a/database/object.cpp b/database/object.cpp new file mode 100644 index 0000000..748078d --- /dev/null +++ b/database/object.cpp @@ -0,0 +1,1702 @@ +/* + * File: object.cpp + * Author: savop + * + * Created on 11. September 2009, 20:39 + */ + +#include +#include +#include +#include +#include +#include "database.h" +#include +#include +#include "metadata.h" +#include "object.h" +#include "../common.h" +#include "resources.h" + +cUPnPResource::cUPnPResource(){ + this->mBitrate = 0; + this->mBitsPerSample = 0; + this->mColorDepth = 0; + this->mDuration = NULL; + this->mImportURI = NULL; + this->mNrAudioChannels = 0; + this->mObjectID = 0; + this->mProtocolInfo = NULL; + this->mResolution = NULL; + this->mResource = NULL; + this->mResourceID = 0; + this->mSampleFrequency = 0; + this->mSize = 0; + this->mContentType = NULL; +} + +off64_t cUPnPResource::getFileSize() const { + return (this->mSize) ? this->mSize : -1; +} + +time_t cUPnPResource::getLastModification() const { + time_t Time; + const cRecording* Recording; + const cEvent* Event; + switch(this->mResourceType){ + case UPNP_RESOURCE_CHANNEL: + case UPNP_RESOURCE_URL: + Time = time(NULL); + break; + case UPNP_RESOURCE_RECORDING: + Recording = Recordings.GetByName(this->mResource); + Event = (Recording)?Recording->Info()->GetEvent():NULL; + Time = (Event)?Event->EndTime():time(NULL); + break; + case UPNP_RESOURCE_FILE: + //break; + default: + ERROR("Invalid resource type. This resource might be broken"); + Time = -1; + } + return Time; +} + +static int CompareUPnPObjects(const void *a, const void *b){ + const cUPnPClassObject *la = *(const cUPnPClassObject **)a; + const cUPnPClassObject *lb = *(const cUPnPClassObject **)b; + return la->Compare(*lb); +} + +cUPnPObjects::cUPnPObjects(){} + +cUPnPObjects::~cUPnPObjects(){} + +void cUPnPObjects::SortBy(const char* Property, bool Descending){ + int n = Count(); + cUPnPClassObject *a[n]; + cUPnPClassObject *object = (cUPnPClassObject *)objects; + int i = 0; + while (object && i < n) { + object->setSortCriteria(Property, Descending); + a[i++] = object; + object = (cUPnPClassObject *)object->Next(); + } + qsort(a, n, sizeof(cUPnPClassObject *), CompareUPnPObjects); + objects = lastObject = NULL; + for (i = 0; i < n; i++) { + a[i]->Unlink(); + count--; + Add(a[i]); + } +} + + /**********************************************\ + * * + * UPnP Objects * + * * + \**********************************************/ + + /**********************************************\ + * * + * Object * + * * + \**********************************************/ + +cUPnPClassObject::cUPnPClassObject(){ + this->mID = -1; + this->mResources = new cList; + this->mResourcesID = new cHash; + this->mParent = NULL; + this->mClass = NULL; + this->mCreator = NULL; + this->mTitle = NULL; + this->mWriteStatus = WS_UNKNOWN; + this->mRestricted = true; + this->mDIDLFragment = NULL; + this->mSortCriteria = NULL; + this->mLastModified = NULL; +} + +cUPnPClassObject::~cUPnPClassObject(){ + if(this->mParent) this->mParent->getContainer()->removeObject(this); + this->mResources->Clear(); + this->mResourcesID->Clear(); + delete this->mResources; + delete this->mResourcesID; + free(this->mDIDLFragment); +} + +int cUPnPClassObject::Compare(const cListObject& ListObject) const { + char* Value1 = NULL; char* Value2 = NULL; int ret = 0; + cUPnPClassObject* Object = (cUPnPClassObject*)&ListObject; + if(Object->getProperty(this->mSortCriteria, &Value1) && + this->getProperty(this->mSortCriteria, &Value2)){ + ret = strcmp(Value1, Value2); + if(this->mSortDescending) ret *= -1; + } + return ret; +} + +void cUPnPClassObject::setSortCriteria(const char* Property, bool Descending){ + this->mSortCriteria = Property; + this->mSortDescending = Descending; +} + +void cUPnPClassObject::clearSortCriteria(){ + this->mSortCriteria = NULL; + this->mSortDescending = false; +} + +int cUPnPClassObject::setID(cUPnPObjectID ID){ + MESSAGE("Set ID from %s to %s", *this->getID(),*ID); + if((int)ID < 0){ + ERROR("Invalid object ID '%s'",*ID); + return -1; + } + this->mID = ID; + return 0; +} + +int cUPnPClassObject::setParent(cUPnPClassContainer* Parent){ + if(Parent==NULL){ + MESSAGE("Object '%s' elected as root object", *this->getID()); + } + // unregister from old parent + if(this->mParent && Parent != this->mParent){ + this->mParent->getContainer()->removeObject(this); + } + this->mParent = Parent; + return 0; +} + +int cUPnPClassObject::setClass(const char* Class){ + if( !strcasecmp(Class, UPNP_CLASS_ALBUM) || + !strcasecmp(Class, UPNP_CLASS_AUDIO) || + !strcasecmp(Class, UPNP_CLASS_AUDIOBC) || + !strcasecmp(Class, UPNP_CLASS_AUDIOBOOK) || + !strcasecmp(Class, UPNP_CLASS_CONTAINER) || + !strcasecmp(Class, UPNP_CLASS_GENRE) || + !strcasecmp(Class, UPNP_CLASS_IMAGE) || + !strcasecmp(Class, UPNP_CLASS_ITEM) || + !strcasecmp(Class, UPNP_CLASS_MOVIE) || + !strcasecmp(Class, UPNP_CLASS_MOVIEGENRE) || + !strcasecmp(Class, UPNP_CLASS_MUSICALBUM) || + !strcasecmp(Class, UPNP_CLASS_MUSICARTIST) || + !strcasecmp(Class, UPNP_CLASS_MUSICGENRE) || + !strcasecmp(Class, UPNP_CLASS_MUSICTRACK) || + !strcasecmp(Class, UPNP_CLASS_MUSICVIDCLIP) || + !strcasecmp(Class, UPNP_CLASS_OBJECT) || + !strcasecmp(Class, UPNP_CLASS_PERSON) || + !strcasecmp(Class, UPNP_CLASS_PHOTO) || + !strcasecmp(Class, UPNP_CLASS_PHOTOALBUM) || + !strcasecmp(Class, UPNP_CLASS_PLAYLIST) || + !strcasecmp(Class, UPNP_CLASS_PLAYLISTCONT) || + !strcasecmp(Class, UPNP_CLASS_STORAGEFOLD) || + !strcasecmp(Class, UPNP_CLASS_STORAGESYS) || + !strcasecmp(Class, UPNP_CLASS_STORAGEVOL) || + !strcasecmp(Class, UPNP_CLASS_TEXT) || + !strcasecmp(Class, UPNP_CLASS_VIDEO) || + !strcasecmp(Class, UPNP_CLASS_VIDEOBC) + ){ + this->mClass = strdup0(Class); + return 0; + } + else { + ERROR("Invalid or unsupported class '%s'", Class); + return -1; + } +} + +int cUPnPClassObject::setTitle(const char* Title){ + if(Title==NULL){ + ERROR("Title is empty but required"); + return -1; + } + this->mTitle = strdup0(Title); + return 0; +} + +int cUPnPClassObject::setCreator(const char* Creator){ + this->mCreator = strdup0(Creator); + return 0; +} + +int cUPnPClassObject::setRestricted(bool Restricted){ + this->mRestricted = Restricted; + return 0; +} + +int cUPnPClassObject::setWriteStatus(int WriteStatus){ + if( WriteStatus == WS_MIXED || + WriteStatus == WS_NOT_WRITABLE || + WriteStatus == WS_PROTECTED || + WriteStatus == WS_UNKNOWN || + WriteStatus == WS_WRITABLE){ + this->mWriteStatus = WriteStatus; + return 0; + } + else { + ERROR("Invalid write status '%d'", WriteStatus); + return -1; + } +} + +bool cUPnPClassObject::getProperty(const char* Property, char** Value) const { + cString Val; + if(!strcasecmp(Property, SQLITE_COL_OBJECTID) || !strcasecmp(Property, UPNP_PROP_OBJECTID)){ + Val = *this->getID(); + } + else if(!strcasecmp(Property, SQLITE_COL_PARENTID) || !strcasecmp(Property, UPNP_PROP_PARENTID)){ + Val = *this->getParentID(); + } + else if(!strcasecmp(Property, SQLITE_COL_CLASS) || !strcasecmp(Property, UPNP_PROP_CLASS)){ + Val = this->getClass(); + } + else if(!strcasecmp(Property, SQLITE_COL_TITLE) || !strcasecmp(Property, UPNP_PROP_TITLE)){ + Val = this->getTitle(); + } + else if(!strcasecmp(Property, SQLITE_COL_CREATOR) || !strcasecmp(Property, UPNP_PROP_CREATOR)){ + Val = this->getCreator(); + } + else if(!strcasecmp(Property, SQLITE_COL_RESTRICTED) || !strcasecmp(Property, UPNP_PROP_RESTRICTED)){ + Val = this->isRestricted()?"1":"0"; + } + else if(!strcasecmp(Property, SQLITE_COL_WRITESTATUS) || !strcasecmp(Property, UPNP_PROP_WRITESTATUS)){ + Val = cString::sprintf("%d",this->getWriteStatus()); + } + else { + ERROR("Invalid property '%s'", Property); + return false; + } + *Value = strdup0(*Val); + return true; +} + +cStringList* cUPnPClassObject::getPropertyList(){ + cStringList* Properties = new cStringList; + Properties->Append(strdup(UPNP_PROP_CREATOR)); + Properties->Append(strdup(UPNP_PROP_WRITESTATUS)); + return Properties; +} + +bool cUPnPClassObject::setProperty(const char* Property, const char* Value){ + int ret; + if(!strcasecmp(Property, SQLITE_COL_OBJECTID) || !strcasecmp(Property, UPNP_PROP_OBJECTID)){ + ERROR("Not allowed to set object ID by hand"); + return false; + } + else if(!strcasecmp(Property, SQLITE_COL_PARENTID) || !strcasecmp(Property, UPNP_PROP_PARENTID)){ + ERROR("Not allowed to set parent ID by hand"); + return false; + } + else if(!strcasecmp(Property, SQLITE_COL_CLASS) || !strcasecmp(Property, UPNP_PROP_CLASS)){ + ERROR("Not allowed to set class by hand"); + return false; + } + else if(!strcasecmp(Property, SQLITE_COL_TITLE) || !strcasecmp(Property, UPNP_PROP_TITLE)){ + ret = this->setTitle(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_CREATOR) || !strcasecmp(Property, UPNP_PROP_CREATOR)){ + ret = this->setCreator(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_RESTRICTED) || !strcasecmp(Property, UPNP_PROP_RESTRICTED)){ + ret = this->setRestricted(atoi(Value)==1?true:false); + } + else if(!strcasecmp(Property, SQLITE_COL_WRITESTATUS) || !strcasecmp(Property, UPNP_PROP_WRITESTATUS)){ + ret= this->setWriteStatus(atoi(Value)); + } + else { + ERROR("Invalid property '%s'", Property); + return false; + } + return ret<0?false:true; +} + +int cUPnPClassObject::addResource(cUPnPResource* Resource){ + MESSAGE("Adding resource #%d", Resource->getID()); + if(!Resource){ + ERROR("No resource"); + return -1; + } + this->mResources->Add(Resource); + this->mResourcesID->Add(Resource, Resource->getID()); + return 0; +} + +int cUPnPClassObject::removeResource(cUPnPResource* Resource){ + if(!Resource){ + ERROR("No resource"); + return -1; + } + this->mResourcesID->Del(Resource, Resource->getID()); + this->mResources->Del(Resource); + return 0; +} + + /**********************************************\ + * * + * Item * + * * + \**********************************************/ + +cUPnPClassItem::cUPnPClassItem(){ + this->setClass(UPNP_CLASS_ITEM); + this->mReference = NULL; +} + +int cUPnPClassItem::setReference(cUPnPClassItem* Reference){ + this->mReference = Reference; + return 0; +} + +cStringList* cUPnPClassItem::getPropertyList(){ + cStringList* Properties = cUPnPClassObject::getPropertyList(); + Properties->Append(strdup(UPNP_PROP_REFERENCEID)); + return Properties; +} + +bool cUPnPClassItem::getProperty(const char* Property, char** Value) const { + + if(!strcasecmp(Property, SQLITE_COL_REFERENCEID) || !strcasecmp(Property, UPNP_PROP_REFERENCEID)){ + *Value = strdup0(*this->getReferenceID()); + } + else return cUPnPClassObject::getProperty(Property, Value); + return true; +} + +bool cUPnPClassItem::setProperty(const char* Property, const char* Value){ + return cUPnPClassObject::setProperty(Property, Value); +} + +IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ + this->mDIDLFragment = Document; + + MESSAGE("==(%s)= %s =====", *this->getID(), this->getTitle()); + MESSAGE("ParentID: %s", *this->getParentID()); + MESSAGE("Restricted: %s", this->isRestricted()?"1":"0"); + MESSAGE("Class: %s", this->getClass()); + + IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); + + IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "item"); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_OBJECTID), *this->getID()); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_PARENTID), *this->getParentID()); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_RESTRICTED), this->isRestricted()?"1":"0"); + + ixmlNode_appendChild(Didl, (IXML_Node*) eItem); + + IXML_Element* eTitle = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_TITLE); + IXML_Node* Title = ixmlDocument_createTextNode(this->mDIDLFragment, this->getTitle()); + + IXML_Element* eClass = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_CLASS); + IXML_Node* Class = ixmlDocument_createTextNode(this->mDIDLFragment, this->getClass()); + + ixmlNode_appendChild((IXML_Node*) eTitle, Title); + ixmlNode_appendChild((IXML_Node*) eClass, Class); + ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eTitle); + ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eClass); + +// if(Filter==NULL || Filter->Find(UPNP_PROP_CREATOR)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CREATOR, this->getCreator()); +// if(Filter==NULL || Filter->Find(UPNP_PROP_WRITESTATUS)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_WRITESTATUS, itoa(this->getWriteStatus())); +// if(Filter==NULL || Filter->Find(UPNP_PROP_REFERENCEID)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_REFERENCEID, *this->getReferenceID()); + + for(cUPnPResource* Resource = this->getResources()->First(); Resource; Resource = this->getResources()->Next(Resource)){ + MESSAGE("Resource: %s", Resource->getResource()); + MESSAGE("Protocolinfo: %s", Resource->getProtocolInfo()); + + cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); + cString ResourceURL = cString::sprintf("%s%s/get?resId=%d", *URLBase, UPNP_DIR_SHARES, Resource->getID()); + + MESSAGE("Resource-URI: %s", *ResourceURL); + + IXML_Element* eRes = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_RESOURCE); + IXML_Node* Res = ixmlDocument_createTextNode(this->mDIDLFragment, *ResourceURL); + ixmlNode_appendChild((IXML_Node*) eRes, Res); + + if(Resource->getBitrate()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_BITRATE), itoa(Resource->getBitrate())); + if(Resource->getBitsPerSample()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_BITSPERSAMPLE), itoa(Resource->getBitsPerSample())); + if(Resource->getColorDepth()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_COLORDEPTH), itoa(Resource->getColorDepth())); + if(Resource->getDuration()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_DURATION), Resource->getDuration()); + if(Resource->getProtocolInfo()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_PROTOCOLINFO), Resource->getProtocolInfo()); + + ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eRes); + } + + return (IXML_Node*)eItem; +} + + /**********************************************\ + * * + * Container * + * * + \**********************************************/ + +cUPnPClassContainer::cUPnPClassContainer(){ + this->setClass(UPNP_CLASS_CONTAINER); + this->mChildren = new cUPnPObjects; + this->mChildrenID = new cHash; + this->mContainerType = NULL; + this->mUpdateID = 0; + this->mSearchable = false; +} + +cUPnPClassContainer::~cUPnPClassContainer(){ + delete this->mChildren; + delete this->mChildrenID; +} + +IXML_Node* cUPnPClassContainer::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ + this->mDIDLFragment = Document; + + MESSAGE("===(%s)= %s =====", *this->getID(), this->getTitle()); + MESSAGE("ParentID: %s", *this->getParentID()); + MESSAGE("Restricted: %s", this->isRestricted()?"1":"0"); + MESSAGE("Class: %s", this->getClass()); + + IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); + IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "container"); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_OBJECTID), *this->getID()); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_PARENTID), *this->getParentID()); + ixmlElement_setAttribute(eItem, att(UPNP_PROP_RESTRICTED), this->isRestricted()?"1":"0"); + ixmlNode_appendChild(Didl, (IXML_Node*) eItem); + + IXML_Element* eTitle = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_TITLE); + IXML_Node* Title = ixmlDocument_createTextNode(this->mDIDLFragment, this->getTitle()); + + IXML_Element* eClass = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_CLASS); + IXML_Node* Class = ixmlDocument_createTextNode(this->mDIDLFragment, this->getClass()); + + ixmlNode_appendChild((IXML_Node*) eTitle, Title); + ixmlNode_appendChild((IXML_Node*) eClass, Class); + ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eTitle); + ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eClass); + + return (IXML_Node*)eItem; +} + +int cUPnPClassContainer::setUpdateID(unsigned int UID){ + this->mUpdateID = UID; + return 0; +} + +cStringList* cUPnPClassContainer::getPropertyList(){ + cStringList* Properties = cUPnPClassObject::getPropertyList(); + Properties->Append(strdup(UPNP_PROP_DLNA_CONTAINERTYPE)); + Properties->Append(strdup(UPNP_PROP_SEARCHABLE)); + return Properties; +} + +bool cUPnPClassContainer::setProperty(const char* Property, const char* Value){ + int ret; + if(!strcasecmp(Property, SQLITE_COL_DLNA_CONTAINERTYPE) || !strcasecmp(Property, UPNP_PROP_DLNA_CONTAINERTYPE)){ + ret = this->setContainerType(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_SEARCHABLE) || !strcasecmp(Property, UPNP_PROP_SEARCHABLE)){ + ret = this->setSearchable(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_CONTAINER_UID)){ + ret = this->setUpdateID((unsigned int)atoi(Value)); + } + else return cUPnPClassObject::setProperty(Property, Value); + return ret<0?false:true; +} + +bool cUPnPClassContainer::getProperty(const char* Property, char** Value) const { + cString Val; + if(!strcasecmp(Property, SQLITE_COL_DLNA_CONTAINERTYPE) || !strcasecmp(Property, UPNP_PROP_DLNA_CONTAINERTYPE)){ + Val = this->getContainerType(); + } + else if(!strcasecmp(Property, SQLITE_COL_SEARCHABLE) || !strcasecmp(Property, UPNP_PROP_SEARCHABLE)){ + Val = this->isSearchable()?"1":"0"; + } + else if(!strcasecmp(Property, SQLITE_COL_CONTAINER_UID)){ + Val = cString::sprintf("%d", this->getUpdateID()); + } + else return cUPnPClassObject::getProperty(Property, Value); + *Value = strdup0(*Val); + return true; +} + +void cUPnPClassContainer::addObject(cUPnPClassObject* Object){ + MESSAGE("Adding object (ID:%s) to container (ID:%s)", *Object->getID(), *this->getID()); + this->mChildren->Add(Object); + this->mChildrenID->Add(Object, (unsigned int)Object->getID()); + Object->setParent(this); +} + +void cUPnPClassContainer::removeObject(cUPnPClassObject* Object){ + MESSAGE("Removing object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); + this->mChildrenID->Del(Object, (unsigned int)Object->getID()); + this->mChildren->Del(Object, false); + Object->mParent = NULL; +} + +cUPnPClassObject* cUPnPClassContainer::getObject(cUPnPObjectID ID) const { + MESSAGE("Getting object (ID:%s)", *ID); + if((int)ID < 0){ + ERROR("Invalid object ID"); + return NULL; + } + return this->mChildrenID->Get((unsigned int)ID); +} + +int cUPnPClassContainer::setContainerType(const char* Type){ + if(Type==NULL){ + this->mContainerType = Type; + } + else if(!strcasecmp(Type, DLNA_CONTAINER_TUNER)){ + this->mContainerType = Type; + } + else { + ERROR("Invalid container type '%s'",Type); + return -1; + } + return 0; +} + +int cUPnPClassContainer::addSearchClass(cClass SearchClass){ + this->mSearchClasses.push_back(SearchClass); + return 0; +} + +int cUPnPClassContainer::delSearchClass(cClass SearchClass){ + tClassVector::iterator it = this->mSearchClasses.begin(); + cClass Class; + for(unsigned int i=0; imSearchClasses.size(); i++){ + Class = this->mSearchClasses[i]; + if(Class == SearchClass){ + this->mSearchClasses.erase(it+i); + return 0; + } + } + return -1; +} + +int cUPnPClassContainer::addCreateClass(cClass CreateClass){ + this->mCreateClasses.push_back(CreateClass); + return 0; +} + +int cUPnPClassContainer::delCreateClass(cClass CreateClass){ + tClassVector::iterator it = this->mCreateClasses.begin(); + cClass Class; + for(unsigned int i=0; imCreateClasses.size(); i++){ + Class = this->mCreateClasses[i]; + if(Class == CreateClass){ + this->mCreateClasses.erase(it+i); + return 0; + } + } + return -1; +} + +int cUPnPClassContainer::setSearchClasses(std::vector SearchClasses){ + this->mSearchClasses = SearchClasses; + return 0; +} + +int cUPnPClassContainer::setCreateClasses(std::vector CreateClasses){ + this->mCreateClasses = CreateClasses; + return 0; +} + +int cUPnPClassContainer::setSearchable(bool Searchable){ + this->mSearchable = Searchable; + return 0; +} + +bool cUPnPClassContainer::isUpdated(){ + static unsigned int lastUpdateID = this->getUpdateID(); + if(lastUpdateID != this->getUpdateID()){ + lastUpdateID = this->getUpdateID(); + return true; + } + else return false; +} + + /**********************************************\ + * * + * Video item * + * * + \**********************************************/ + +cUPnPClassVideoItem::cUPnPClassVideoItem(){ + this->setClass(UPNP_CLASS_VIDEO); + this->mGenre = NULL; + this->mLongDescription = NULL; + this->mProducers = NULL; + this->mRating = NULL; + this->mActors = NULL; + this->mDirectors = NULL; + this->mDescription = NULL; + this->mPublishers = NULL; + this->mLanguage = NULL; + this->mRelations = NULL; +} + +cUPnPClassVideoItem::~cUPnPClassVideoItem(){ +} + +//cString cUPnPClassVideoItem::createDIDLFragment(cStringList* Filter){ +// return NULL; +//} + +cStringList* cUPnPClassVideoItem::getPropertyList(){ + cStringList* Properties = cUPnPClassItem::getPropertyList(); + Properties->Append(strdup(UPNP_PROP_LONGDESCRIPTION)); + Properties->Append(strdup(UPNP_PROP_PRODUCER)); + Properties->Append(strdup(UPNP_PROP_GENRE)); + Properties->Append(strdup(UPNP_PROP_RATING)); + Properties->Append(strdup(UPNP_PROP_ACTOR)); + Properties->Append(strdup(UPNP_PROP_DIRECTOR)); + Properties->Append(strdup(UPNP_PROP_DESCRIPTION)); + Properties->Append(strdup(UPNP_PROP_PUBLISHER)); + Properties->Append(strdup(UPNP_PROP_LANGUAGE)); + Properties->Append(strdup(UPNP_PROP_RELATION)); + return Properties; +} + +bool cUPnPClassVideoItem::getProperty(const char* Property, char** Value) const { + cString Val; + if(!strcasecmp(Property,SQLITE_COL_GENRE) || !strcasecmp(Property,UPNP_PROP_GENRE)){ + Val = this->getGenre(); + } + else if(!strcasecmp(Property,SQLITE_COL_LONGDESCRIPTION) || !strcasecmp(Property,UPNP_PROP_LONGDESCRIPTION)){ + Val = this->getLongDescription(); + } + else if(!strcasecmp(Property,SQLITE_COL_PRODUCER) || !strcasecmp(Property,UPNP_PROP_PRODUCER)){ + Val = this->getProducers(); + } + else if(!strcasecmp(Property,SQLITE_COL_RATING) || !strcasecmp(Property,UPNP_PROP_RATING)){ + Val = this->getRating(); + } + else if(!strcasecmp(Property,SQLITE_COL_ACTOR) || !strcasecmp(Property,UPNP_PROP_ACTOR)){ + Val = this->getActors(); + } + else if(!strcasecmp(Property,SQLITE_COL_DIRECTOR) || !strcasecmp(Property,UPNP_PROP_DIRECTOR)){ + Val = this->getDirectors(); + } + else if(!strcasecmp(Property,SQLITE_COL_DESCRIPTION) || !strcasecmp(Property,UPNP_PROP_DESCRIPTION)){ + Val = this->getDescription(); + } + else if(!strcasecmp(Property,SQLITE_COL_PUBLISHER) || !strcasecmp(Property,UPNP_PROP_PUBLISHER)){ + Val = this->getPublishers(); + } + else if(!strcasecmp(Property,SQLITE_COL_LANGUAGE) || !strcasecmp(Property,UPNP_PROP_LANGUAGE)){ + Val = this->getLanguage(); + } + else if(!strcasecmp(Property,SQLITE_COL_RELATION) || !strcasecmp(Property,UPNP_PROP_RELATION)){ + Val = this->getRelations(); + } + else return cUPnPClassItem::getProperty(Property, Value); + *Value = strdup0(*Val); + return true; +} + +bool cUPnPClassVideoItem::setProperty(const char* Property, const char* Value){ + bool ret; + if(!strcasecmp(Property,SQLITE_COL_GENRE) || !strcasecmp(Property,UPNP_PROP_GENRE)){ + ret = this->setGenre(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_LONGDESCRIPTION) || !strcasecmp(Property,UPNP_PROP_LONGDESCRIPTION)){ + ret = this->setLongDescription(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_PRODUCER) || !strcasecmp(Property,UPNP_PROP_PRODUCER)){ + ret = this->setProducers(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_RATING) || !strcasecmp(Property,UPNP_PROP_RATING)){ + ret = this->setRating(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_ACTOR) || !strcasecmp(Property,UPNP_PROP_ACTOR)){ + ret = this->setActors(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_DIRECTOR) || !strcasecmp(Property,UPNP_PROP_DIRECTOR)){ + ret = this->setDirectors(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_DESCRIPTION) || !strcasecmp(Property,UPNP_PROP_DESCRIPTION)){ + ret = this->setDescription(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_PUBLISHER) || !strcasecmp(Property,UPNP_PROP_PUBLISHER)){ + ret = this->setPublishers(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_LANGUAGE) || !strcasecmp(Property,UPNP_PROP_LANGUAGE)){ + ret = this->setLanguage(Value); + } + else if(!strcasecmp(Property,SQLITE_COL_RELATION) || !strcasecmp(Property,UPNP_PROP_RELATION)){ + ret = this->setRelations(Value); + } + else return cUPnPClassItem::setProperty(Property, Value); + return ret<0?false:true; +} + +int cUPnPClassVideoItem::setActors(const char* Actors){ + this->mActors = Actors; + return 0; +} + +int cUPnPClassVideoItem::setGenre(const char* Genre){ + this->mGenre = Genre; + return 0; +} + +int cUPnPClassVideoItem::setDescription(const char* Description){ + this->mDescription = Description; + return 0; +} + +int cUPnPClassVideoItem::setLongDescription(const char* LongDescription){ + this->mLongDescription = LongDescription; + return 0; +} + +int cUPnPClassVideoItem::setProducers(const char* Producers){ + this->mProducers = Producers; + return 0; +} + +int cUPnPClassVideoItem::setRating(const char* Rating){ + this->mRating = Rating; + return 0; +} + +int cUPnPClassVideoItem::setDirectors(const char* Directors){ + this->mDirectors = Directors; + return 0; +} + +int cUPnPClassVideoItem::setPublishers(const char* Publishers){ + this->mPublishers = Publishers; + return 0; +} + +int cUPnPClassVideoItem::setLanguage(const char* Language){ + this->mLanguage = Language; + return 0; +} + +int cUPnPClassVideoItem::setRelations(const char* Relations){ + this->mRelations = Relations; + return 0; +} + + /**********************************************\ + * * + * Video Broadcast item * + * * + \**********************************************/ + +cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast(){ + this->setClass(UPNP_CLASS_VIDEOBC); + this->mIcon = NULL; + this->mRegion = NULL; + this->mChannelNr = 0; +} + +cUPnPClassVideoBroadcast::~cUPnPClassVideoBroadcast(){ +} + +//cString cUPnPClassVideoBroadcast::createDIDLFragment(cStringList* Filter){ +// return NULL; +//} + +cStringList* cUPnPClassVideoBroadcast::getPropertyList(){ + cStringList* Properties = cUPnPClassVideoItem::getPropertyList(); + Properties->Append(strdup(UPNP_PROP_CHANNELNAME)); + Properties->Append(strdup(UPNP_PROP_CHANNELNR)); + Properties->Append(strdup(UPNP_PROP_ICON)); + Properties->Append(strdup(UPNP_PROP_REGION)); + return Properties; +} + +bool cUPnPClassVideoBroadcast::setProperty(const char* Property, const char* Value){ + bool ret; + if(!strcasecmp(Property, SQLITE_COL_CHANNELNAME) || !strcasecmp(Property, UPNP_PROP_CHANNELNAME)){ + ret = this->setChannelName(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_CHANNELNR) || !strcasecmp(Property, UPNP_PROP_CHANNELNR)){ + ret = this->setChannelNr(atoi(Value)); + } + else if(!strcasecmp(Property, SQLITE_COL_ICON) || !strcasecmp(Property, UPNP_PROP_ICON)){ + ret = this->setIcon(Value); + } + else if(!strcasecmp(Property, SQLITE_COL_REGION) || !strcasecmp(Property, UPNP_PROP_REGION)){ + ret = this->setRegion(Value); + } + else return cUPnPClassVideoItem::setProperty(Property, Value); + return ret<0?false:true; +} + +bool cUPnPClassVideoBroadcast::getProperty(const char* Property, char** Value) const { + cString Val; + if(!strcasecmp(Property, SQLITE_COL_CHANNELNAME) || !strcasecmp(Property, UPNP_PROP_CHANNELNAME)){ + Val = this->getChannelName(); + } + else if(!strcasecmp(Property, SQLITE_COL_CHANNELNR) || !strcasecmp(Property, UPNP_PROP_CHANNELNR)){ + Val = itoa(this->getChannelNr()); + } + else if(!strcasecmp(Property, SQLITE_COL_ICON) || !strcasecmp(Property, UPNP_PROP_ICON)){ + Val = this->getIcon(); + } + else if(!strcasecmp(Property, SQLITE_COL_REGION) || !strcasecmp(Property, UPNP_PROP_REGION)){ + Val = this->getRegion(); + } + else return cUPnPClassVideoItem::getProperty(Property, Value); + *Value = strdup0(*Val); + return true; +} + +int cUPnPClassVideoBroadcast::setChannelName(const char* ChannelName){ + this->mChannelName = ChannelName; + return 0; +} + +int cUPnPClassVideoBroadcast::setChannelNr(int ChannelNr){ + this->mChannelNr = ChannelNr; + return 0; +} + +int cUPnPClassVideoBroadcast::setIcon(const char* IconURI){ + this->mIcon = IconURI; + return 0; +} + +int cUPnPClassVideoBroadcast::setRegion(const char* Region){ + this->mRegion = Region; + return 0; +} + + /**********************************************\ + * * + * Mediator factory * + * * + \**********************************************/ + +cUPnPObjectFactory* cUPnPObjectFactory::mInstance = NULL; + +cUPnPObjectFactory* cUPnPObjectFactory::getInstance(){ + if(!cUPnPObjectFactory::mInstance) + cUPnPObjectFactory::mInstance = new cUPnPObjectFactory(); + + if(cUPnPObjectFactory::mInstance) return cUPnPObjectFactory::mInstance; + else return NULL; +} + +cUPnPObjectFactory::cUPnPObjectFactory(){ + this->mDatabase = cSQLiteDatabase::getInstance(); +} + +void cUPnPObjectFactory::registerMediator(const char* UPnPClass, cMediatorInterface* Mediator){ + if(UPnPClass == NULL){ + ERROR("Class is undefined"); + return; + } + if(Mediator == NULL){ + ERROR("Mediator is undefined"); + return; + } + MESSAGE("Registering mediator for class '%s'", UPnPClass); + this->mMediators[UPnPClass] = Mediator; + MESSAGE("Now %d mediators registered", this->mMediators.size()); + return; +} + +void cUPnPObjectFactory::unregisterMediator(const char* UPnPClass, bool freeMediator){ + if(UPnPClass == NULL){ + ERROR("Class is undefined"); + return; + } + tMediatorMap::iterator MediatorIterator = this->mMediators.find(UPnPClass); + if(MediatorIterator==this->mMediators.end()){ + ERROR("No such mediator found for class '%s'", UPnPClass); + return; + } + MESSAGE("Unregistering mediator for class '%s'", UPnPClass); + this->mMediators.erase(MediatorIterator); + if(freeMediator) delete MediatorIterator->second; + MESSAGE("Now %d mediators registered", this->mMediators.size()); + return; +} + +cMediatorInterface* cUPnPObjectFactory::findMediatorByID(cUPnPObjectID ID){ + cString Format = "SELECT %s FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL, Class = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_COL_CLASS, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return NULL; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + ERROR("No such object with ID '%s'",*ID); + return NULL; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_CLASS)){ + Class = strdup0(*Value); + } + } + return this->findMediatorByClass(Class); +} + +cMediatorInterface* cUPnPObjectFactory::findMediatorByClass(const char* Class){ + if(!Class){ ERROR("No class specified"); return NULL; } + MESSAGE("Searching for mediator '%s' in %d mediators", Class, this->mMediators.size()); + tMediatorMap::iterator MediatorIterator = this->mMediators.find(Class); + if(MediatorIterator==this->mMediators.end()){ + ERROR("No matching mediator for class '%s'",Class); + return NULL; + } + else { + return MediatorIterator->second; + } +} + +cUPnPClassObject* cUPnPObjectFactory::getObject(cUPnPObjectID ID){ + cMediatorInterface* Mediator = this->findMediatorByID(ID); + if(Mediator) return Mediator->getObject(ID); + else { + return NULL; + } +} + +cUPnPClassObject* cUPnPObjectFactory::createObject(const char* UPnPClass, const char* Title, bool Restricted){ + cMediatorInterface* Mediator = this->findMediatorByClass(UPnPClass); + return Mediator->createObject(Title, Restricted); +} + +int cUPnPObjectFactory::deleteObject(cUPnPClassObject* Object){ + cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); + return Mediator->deleteObject(Object); +} + +int cUPnPObjectFactory::clearObject(cUPnPClassObject* Object){ + cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); + return Mediator->clearObject(Object); +} + +int cUPnPObjectFactory::saveObject(cUPnPClassObject* Object){ + cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); + return Mediator->saveObject(Object); +} + + /**********************************************\ + * * + * Mediators * + * * + \**********************************************/ + + /**********************************************\ + * * + * Object mediator * + * * + \**********************************************/ + +cUPnPObjectMediator::cUPnPObjectMediator(cMediaDatabase* MediaDatabase) : + mMediaDatabase(MediaDatabase){ + this->mDatabase = cSQLiteDatabase::getInstance(); +} + +cUPnPObjectMediator::~cUPnPObjectMediator(){ + delete this->mDatabase; + delete this->mMediaDatabase; +} + +int cUPnPObjectMediator::saveObject(cUPnPClassObject* Object){ + bool succesful = true; + + this->mDatabase->startTransaction(); + if(Object->getID() == -1) succesful = false; + else if(this->objectToDatabase(Object)) succesful = false; + else succesful = true; + + if(succesful){ + this->mDatabase->commitTransaction(); + Object->setModified(); + this->mMediaDatabase->cacheObject(Object); + this->mMediaDatabase->updateSystemID(); + return 0; + } + else { + this->mDatabase->rollbackTransaction(); + return -1; + } + return -1; +} + +int cUPnPObjectMediator::deleteObject(cUPnPClassObject* Object){ + cString Statement = NULL; + cString Format = "DELETE FROM %s WHERE %s=%s"; + Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *Object->getID()); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + #ifdef SQLITE_CASCADE_DELETES + this->clearObject(Object); + #endif + delete Object; Object = NULL; + return 0; +} + +int cUPnPObjectMediator::clearObject(cUPnPClassObject* Object){ + cUPnPClassContainer* Container = Object->getContainer(); + if(Container){ + cList* List = Container->getObjectList(); + for(cUPnPClassObject* Child = List->First(); Child; Child = List->Next(Child)){ + if(this->deleteObject(Child)) return -1; + } + } + return 0; +} + +int cUPnPObjectMediator::initializeObject(cUPnPClassObject* Object, const char* Class, const char* Title, bool Restricted){ + cUPnPObjectID ObjectID = this->mMediaDatabase->getNextObjectID(); + if(Object->setID(ObjectID)){ + ERROR("Error while setting ID"); + return -1; + } + cUPnPClassObject* Root = this->mMediaDatabase->getObjectByID(0); + if(Root){ + Root->getContainer()->addObject(Object); + } + else { + Object->setParent(NULL); + } + if(Object->setClass(Class)){ + ERROR("Error while setting class"); + return -1; + } + if(Object->setTitle(Title)){ + ERROR("Error while setting title"); + return -1; + } + if(Object->setRestricted(Restricted)){ + ERROR("Error while setting restriction"); + return -1; + } + char* escapedTitle; + escapeSQLite(Object->getTitle(), &escapedTitle); + cString Statement = cString::sprintf("INSERT INTO %s (%s, %s, %s, %s, %s) VALUES (%s, %s, '%s', '%s', %d)", + SQLITE_TABLE_OBJECTS, + SQLITE_COL_OBJECTID, + SQLITE_COL_PARENTID, + SQLITE_COL_CLASS, + SQLITE_COL_TITLE, + SQLITE_COL_RESTRICTED, + *Object->getID(), + *Object->getParentID(), + Object->getClass(), + escapedTitle, + Object->isRestricted()?1:0 + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + free(escapedTitle); + return 0; +} + +cUPnPClassObject* cUPnPObjectMediator::getObject(cUPnPObjectID){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } + +cUPnPClassObject* cUPnPObjectMediator::createObject(const char*, bool){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } + +int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ + cString Format = "UPDATE %s SET %s WHERE %s='%s'"; + //cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL; + cString Set=NULL; + //cString Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_PARENTID, + SQLITE_COL_CLASS, + SQLITE_COL_TITLE, + SQLITE_COL_RESTRICTED, + SQLITE_COL_CREATOR, + SQLITE_COL_WRITESTATUS, + NULL + }; + for(cString* Property = Properties; *(*Property)!=NULL; Property++){ + //Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!Object->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + //Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", Value?Value:"NULL"); + Set = cString::sprintf("%s%s%s='%s'", *Set?*Set:"", *Set?",":"", *(*Property), escapedValue?escapedValue:"NULL"); + + } + Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->getID()); + //Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID); +// MESSAGE("Fehler hier"); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + ERROR("No such object with ID '%s'",*ID); + return -1; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ + if(Object->setID(atoi(Value))){ + ERROR("Error while setting object ID"); + return -1; + } + this->mMediaDatabase->cacheObject(Object); + } + else if(!strcasecmp(Column, SQLITE_COL_PARENTID)){ + cUPnPObjectID RefID = atoi(Value); + cUPnPClassContainer* ParentObject; + if(RefID == -1){ + ParentObject = NULL; + } + else { + ParentObject = (cUPnPClassContainer*)this->mMediaDatabase->getObjectByID(RefID); + if(!ParentObject){ + ERROR("No such parent with ID '%s' found.",*RefID); + return -1; + } + } + Object->setParent(ParentObject); + } + else if(!strcasecmp(Column, SQLITE_COL_CLASS)){ + if(Object->setClass(Value)){ + ERROR("Error while setting class"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_TITLE)){ + if(Object->setTitle(Value)){ + ERROR("Error while setting title"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_RESTRICTED)){ + if(Object->setRestricted(atoi(Value)==1?true:false)){ + ERROR("Error while setting restriction"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_CREATOR)){ + if(Object->setCreator(Value)){ + ERROR("Error while setting creator"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_WRITESTATUS)){ + if(Object->setWriteStatus(atoi(Value))){ + ERROR("Error while setting write status"); + return -1; + } + } + } + cUPnPResources::getInstance()->getResourcesOfObject(Object); + return 0; +} + + /**********************************************\ + * * + * Item mediator * + * * + \**********************************************/ + +cUPnPItemMediator::cUPnPItemMediator(cMediaDatabase* MediaDatabase) : + cUPnPObjectMediator(MediaDatabase){} + +int cUPnPItemMediator::objectToDatabase(cUPnPClassObject* Object){ + if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; + cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL, Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_REFERENCEID, + NULL + }; + for(cString* Property = Properties; *(*Property); Property++){ + Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!Object->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + + } + Statement = cString::sprintf(Format, SQLITE_TABLE_ITEMS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +int cUPnPItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + if(cUPnPObjectMediator::databaseToObject(Object,ID)){ + ERROR("Error while loading object"); + return -1; + } + cUPnPClassItem* Item = (cUPnPClassItem*) Object; + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_ITEMS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + MESSAGE("No item properties found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_REFERENCEID)){ + cUPnPObjectID RefID = atoi(Value); + cUPnPClassItem* RefObject; + if(RefID == -1){ + RefObject = NULL; + } + else { + RefObject = (cUPnPClassItem*)this->mMediaDatabase->getObjectByID(RefID); + if(!RefObject){ + ERROR("No such reference item with ID '%s' found.",*RefID); + return -1; + } + } + Item->setReference(RefObject); + } + } + return 0; +} + +cUPnPClassItem* cUPnPItemMediator::getObject(cUPnPObjectID ID){ + MESSAGE("Getting Item with ID '%s'",*ID); + cUPnPClassItem* Object = new cUPnPClassItem; + if(this->databaseToObject(Object, ID)) return NULL; + return Object; +} + +cUPnPClassItem* cUPnPItemMediator::createObject(const char* Title, bool Restricted){ + MESSAGE("Creating Item '%s'",Title); + cUPnPClassItem* Object = new cUPnPClassItem; + if(this->initializeObject(Object, UPNP_CLASS_ITEM, Title, Restricted)) return NULL; + return Object; +} + + /**********************************************\ + * * + * Container mediator * + * * + \**********************************************/ + +cUPnPContainerMediator::cUPnPContainerMediator(cMediaDatabase* MediaDatabase) : + cUPnPObjectMediator(MediaDatabase){} + +int cUPnPContainerMediator::objectToDatabase(cUPnPClassObject* Object){ + if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; + cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; + cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL, Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_DLNA_CONTAINERTYPE, + SQLITE_COL_SEARCHABLE, + SQLITE_COL_CONTAINER_UID, + NULL + }; + for(cString* Property = Properties; *(*Property); Property++){ + Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!Container->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Container->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + } + Statement = cString::sprintf(Format, SQLITE_TABLE_CONTAINERS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + for(unsigned int i=0; igetSearchClasses()->size(); i++){ + cClass Class = Container->getSearchClasses()->at(i); + Columns = cString::sprintf("%s,%s,%s", SQLITE_COL_OBJECTID, SQLITE_COL_CLASS, SQLITE_COL_CLASSDERIVED); + Values = cString::sprintf("'%s','%s','%s'", *Container->getID(), *Class.ID, Class.includeDerived?"1":"0"); + Statement = cString::sprintf(Format, SQLITE_TABLE_SEARCHCLASS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + } + // Create classes not necessary at the moment + return 0; +} + +int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + if(cUPnPObjectMediator::databaseToObject(Object,ID)){ + ERROR("Error while loading object"); + return -1; + } + cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_CONTAINERS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + MESSAGE("No item properties found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_DLNA_CONTAINERTYPE)){ + if(Container->setContainerType(Value)){ + ERROR("Error while setting container type"); + return -1; + } + } + if(!strcasecmp(Column, SQLITE_COL_CONTAINER_UID)){ + if(Container->setUpdateID((unsigned int)atoi(Value))){ + ERROR("Error while setting update ID"); + return -1; + } + } + if(!strcasecmp(Column, SQLITE_COL_SEARCHABLE)){ + if(Container->setSearchable(atoi(Value)==1?true:false)){ + ERROR("Error while setting searchable"); + return -1; + } + } + } + Statement = cString::sprintf("SELECT %s FROM %s WHERE %s=%s", SQLITE_COL_OBJECTID, + SQLITE_TABLE_OBJECTS, + SQLITE_COL_PARENTID, + *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + while(Rows->fetchRow(&Row)){ + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ + Container->addObject(this->mMediaDatabase->getObjectByID(atoi(Value))); + } + } + } + Statement = cString::sprintf(Format, SQLITE_TABLE_SEARCHCLASS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + std::vector SearchClasses; + Rows = this->mDatabase->getResultRows(); + while(Rows->fetchRow(&Row)){ + cClass Class; + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_CLASS)){ + Class.ID = strdup0(*Value); + } + else if(!strcasecmp(Column, SQLITE_COL_CLASSDERIVED)){ + Class.includeDerived = atoi(Value)==1?"true":"false"; + } + } + SearchClasses.push_back(Class); + } + if(Container->setSearchClasses(SearchClasses)){ + ERROR("Error while setting search classes"); + return -1; + } + return 0; +} + +cUPnPClassContainer* cUPnPContainerMediator::createObject(const char* Title, bool Restricted){ + MESSAGE("Creating Container '%s'",Title); + cUPnPClassContainer* Object = new cUPnPClassContainer; + if(this->initializeObject(Object, UPNP_CLASS_CONTAINER, Title, Restricted)) return NULL; + return Object; +} + +cUPnPClassContainer* cUPnPContainerMediator::getObject(cUPnPObjectID ID){ + MESSAGE("Getting Container with ID '%s'",*ID); + cUPnPClassContainer* Object = new cUPnPClassContainer; + if(this->databaseToObject(Object, ID)) return NULL; + return Object; +} + + /**********************************************\ + * * + * Video item mediator * + * * + \**********************************************/ + +cUPnPVideoItemMediator::cUPnPVideoItemMediator(cMediaDatabase* MediaDatabase) : + cUPnPItemMediator(MediaDatabase){} + +cUPnPClassVideoItem* cUPnPVideoItemMediator::createObject(const char* Title, bool Restricted){ + MESSAGE("Creating Video item '%s'",Title); + cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; + if(this->initializeObject(Object, UPNP_CLASS_VIDEO, Title, Restricted)) return NULL; + return Object; +} + +cUPnPClassVideoItem* cUPnPVideoItemMediator::getObject(cUPnPObjectID ID){ + MESSAGE("Getting Video item with ID '%s'",*ID); + cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; + if(this->databaseToObject(Object, ID)) return NULL; + return Object; +} + +int cUPnPVideoItemMediator::objectToDatabase(cUPnPClassObject* Object){ + if(cUPnPItemMediator::objectToDatabase(Object)) return -1; + cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; + cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL, Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_GENRE, + SQLITE_COL_LONGDESCRIPTION, + SQLITE_COL_PRODUCER, + SQLITE_COL_RATING, + SQLITE_COL_ACTOR, + SQLITE_COL_DIRECTOR, + SQLITE_COL_DESCRIPTION, + SQLITE_COL_PUBLISHER, + SQLITE_COL_LANGUAGE, + SQLITE_COL_RELATION, + NULL + }; + for(cString* Property = Properties; *(*Property); Property++){ + Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!VideoItem->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoItem->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + + } + Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOITEMS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +int cUPnPVideoItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + if(cUPnPItemMediator::databaseToObject(Object,ID)){ + ERROR("Error while loading object"); + return -1; + } + cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOITEMS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + MESSAGE("No item properties found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_GENRE)){ + if(VideoItem->setGenre(Value)){ + ERROR("Error while setting genre"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_LONGDESCRIPTION)){ + if(VideoItem->setLongDescription(Value)){ + ERROR("Error while setting long description"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_PRODUCER)){ + if(VideoItem->setProducers(Value)){ + ERROR("Error while setting producers"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_RATING)){ + if(VideoItem->setRating(Value)){ + ERROR("Error while setting rating"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_ACTOR)){ + if(VideoItem->setActors(Value)){ + ERROR("Error while setting actors"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_DIRECTOR)){ + if(VideoItem->setDirectors(Value)){ + ERROR("Error while setting directors"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_DESCRIPTION)){ + if(VideoItem->setDescription(Value)){ + ERROR("Error while setting description"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_PUBLISHER)){ + if(VideoItem->setPublishers(Value)){ + ERROR("Error while setting publishers"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_LANGUAGE)){ + if(VideoItem->setLanguage(Value)){ + ERROR("Error while setting language"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_RELATION)){ + if(VideoItem->setRelations(Value)){ + ERROR("Error while setting relations"); + return -1; + } + } + } + return 0; +} + + /**********************************************\ + * * + * Video broadcast item mediator * + * * + \**********************************************/ + +cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator(cMediaDatabase* MediaDatabase) : + cUPnPVideoItemMediator(MediaDatabase){} + +cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::createObject(const char* Title, bool Restricted){ + MESSAGE("Creating Video broadcast '%s'",Title); + cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; + if(this->initializeObject(Object, UPNP_CLASS_VIDEOBC, Title, Restricted)) return NULL; + return Object; +} + +cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::getObject(cUPnPObjectID ID){ + MESSAGE("Getting Video broadcast with ID '%s'",*ID); + cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; + if(this->databaseToObject(Object, ID)) return NULL; + return Object; +} + +int cUPnPVideoBroadcastMediator::objectToDatabase(cUPnPClassObject* Object){ + if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; + cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; + cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL, Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_ICON, + SQLITE_COL_REGION, + SQLITE_COL_CHANNELNAME, + SQLITE_COL_CHANNELNR, + NULL + }; + for(cString* Property = Properties; *(*Property); Property++){ + Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!VideoBroadcast->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoBroadcast->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + + } + Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOBROADCASTS, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +int cUPnPVideoBroadcastMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + if(cUPnPVideoItemMediator::databaseToObject(Object,ID)){ + ERROR("Error while loading object"); + return -1; + } + cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOBROADCASTS, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + MESSAGE("No item properties found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_ICON)){ + if(VideoBroadcast->setIcon(Value)){ + ERROR("Error while setting icon"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_REGION)){ + if(VideoBroadcast->setRegion(Value)){ + ERROR("Error while setting region"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_CHANNELNR)){ + if(VideoBroadcast->setChannelNr(atoi(Value))){ + ERROR("Error while setting channel number"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_CHANNELNAME)){ + if(VideoBroadcast->setChannelName(Value)){ + ERROR("Error while setting channel name"); + return -1; + } + } + } + return 0; +} \ No newline at end of file diff --git a/database/object.h b/database/object.h new file mode 100644 index 0000000..9b62c54 --- /dev/null +++ b/database/object.h @@ -0,0 +1,397 @@ +/* + * 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 "../misc/util.h" +#include +#include +#include +#include +#include + +struct cUPnPObjectID { + int _ID; + cUPnPObjectID():_ID(-1){} + cUPnPObjectID(long ID){ _ID = (int)ID; } + cUPnPObjectID(int ID){ _ID = ID; } + cUPnPObjectID &operator=(long ID){ _ID = ID; return *this; } + cUPnPObjectID &operator=(int ID){ _ID = ID; return *this; } + cUPnPObjectID &operator=(const cUPnPObjectID& ID){ if(this != &ID){ _ID = ID._ID; } return *this; } + cUPnPObjectID &operator++(){ _ID++; return *this; } + cUPnPObjectID operator++(int){ cUPnPObjectID old = *this; _ID++; return old; } + cUPnPObjectID operator--(int){ cUPnPObjectID old = *this; _ID--; return old; } + cUPnPObjectID &operator--(){ _ID--; return *this; } + bool operator!=(long ID){ return _ID != ID; } + bool operator==(long ID){ return _ID == ID; } + bool operator!=(int ID){ return _ID != ID; } + bool operator==(int ID){ return _ID == ID; } + bool operator!=(const cUPnPObjectID& ID){ return *this == ID; } + bool operator==(const cUPnPObjectID& ID){ return *this == ID; } + operator unsigned int(){ return (unsigned int)_ID; } + operator int(){ return _ID; } + operator long(){ return (long)_ID; } + const char* operator*(){ char* buf; return asprintf(&buf,"%d",_ID)?buf:NULL; } +}; + +struct cClass { + cString ID; + bool includeDerived; + bool operator==(const cClass &cmp){ return (!strcasecmp(cmp.ID,ID) && includeDerived==cmp.includeDerived); } + bool operator!=(const cClass &cmp){ return !(*this==cmp); } +}; + +class cUPnPResource : public cListObject { + friend class cUPnPResourceMediator; + friend class cUPnPResources; +private: + unsigned int mResourceID; + cUPnPObjectID mObjectID; + int mResourceType; + cString mResource; + cString mDuration; + cString mResolution; + cString mProtocolInfo; + cString mContentType; + cString mImportURI; + unsigned long mSize; + unsigned int mBitrate; + unsigned int mSampleFrequency; + unsigned int mBitsPerSample; + unsigned int mNrAudioChannels; + unsigned int mColorDepth; + cUPnPResource(); +public: + unsigned int getID() const { return this->mResourceID; } + const char* getResource() const { return this->mResource; } + const char* getDuration() const { return this->mDuration; } + const char* getResolution() const { return this->mResolution; } + const char* getProtocolInfo() const { return this->mProtocolInfo; } + const char* getContentType() const { return this->mContentType; } + const char* getImportURI() const { return this->mImportURI; } + int getResourceType() const { return this->mResourceType; } + unsigned long getSize() const { return this->mSize; } + off64_t getFileSize() const; + time_t getLastModification() const; + unsigned int getBitrate() const { return this->mBitrate; } + unsigned int getSampleFrequency() const { return this->mSampleFrequency; } + unsigned int getBitsPerSample() const { return this->mBitsPerSample; } + unsigned int getNrAudioChannels() const { return this->mNrAudioChannels; } + unsigned int getColorDepth() const { return this->mColorDepth; } +}; + +class cUPnPClassObject; +class cUPnPObjectMediator; +class cUPnPContainerMediator; +class cUPnPClassContainer; + +class cUPnPObjects : public cList { +public: + cUPnPObjects(); + virtual ~cUPnPObjects(); + void SortBy(const char* Property, bool Descending = false); +}; + +class cUPnPClassObject : public cListObject { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPClassContainer; +private: + bool mDeleted; // is this Objected marked as deleted +protected: + time_t mLastModified; + cUPnPObjectID mID; // The object ID + cUPnPClassObject* mParent; + 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* mResources; // The resources of this object + cHash* mResourcesID; + IXML_Document* mDIDLFragment; + cString mSortCriteria; + bool mSortDescending; + cUPnPClassObject(); + int setID(cUPnPObjectID ID); + int setParent(cUPnPClassContainer* Parent); + int setClass(const char* Class); + void setModified(void){ this->mLastModified = time(NULL); } +public: + time_t modified() const { return this->mLastModified; } + virtual ~cUPnPClassObject(); + virtual int Compare(const cListObject& ListObject) const; + virtual cStringList* getPropertyList(); + virtual bool getProperty(const char* Property, char** Value) const ; + virtual bool setProperty(const char* Property, const char* Value); + virtual cUPnPClassContainer* getContainer(){ return NULL; } + virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter) = 0; + bool isContainer(){ return this->getContainer()==NULL?false:true; } + void setSortCriteria(const char* Property, bool Descending = false); + void clearSortCriteria(); + /******* Setter *******/ + int setTitle(const char* Title); + int setCreator(const char* Creator); + int setRestricted(bool Restricted); + int setWriteStatus(int Status); + int setResources(cList* Resources); + int addResource(cUPnPResource* Resource); + int removeResource(cUPnPResource* Resource); + /******* Getter *******/ + cUPnPObjectID getID() const { return this->mID; } + cUPnPObjectID getParentID() const { return this->mParent?this->mParent->getID():cUPnPObjectID(-1); } + cUPnPClassContainer* getParent() const { return (cUPnPClassContainer*)this->mParent; } + const char* getTitle() const { return this->mTitle; } + const char* getClass() const { return this->mClass; } + const char* getCreator() const { return this->mCreator; } + bool isRestricted() const { return this->mRestricted; } + int getWriteStatus() const { return this->mWriteStatus; } + cUPnPResource* getResource(unsigned int ResourceID) const { return this->mResourcesID->Get(ResourceID); } + cList* getResources() const { return this->mResources; } +}; + +class cUPnPClassItem : public cUPnPClassObject { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPItemMediator; +protected: +// cUPnPObjectID mReferenceID; + cUPnPClassItem* mReference; + 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 ********/ + int setReference(cUPnPClassItem* Reference); + /******** Getter ********/ + cUPnPClassItem* getReference() const { return this->mReference; } + cUPnPObjectID getReferenceID() const { return this->mReference?this->mReference->getID():cUPnPObjectID(-1); } +}; + +typedef std::vector tClassVector; + +class cUPnPClassContainer : public cUPnPClassObject { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPContainerMediator; +protected: + cString mContainerType; + tClassVector mSearchClasses; + tClassVector mCreateClasses; + bool mSearchable; + unsigned int mUpdateID; + cUPnPObjects* mChildren; + cHash* mChildrenID; + void update(); + int setUpdateID(unsigned int UID); + 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; } + void addObject(cUPnPClassObject* Object); + void removeObject(cUPnPClassObject* Object); + cUPnPClassObject* getObject(cUPnPObjectID ID) const; + cUPnPObjects* getObjectList() const { return this->mChildren; } + int addSearchClass(cClass SearchClass); + int delSearchClass(cClass SearchClass); + int addCreateClass(cClass CreateClass); + int delCreateClass(cClass CreateClass); + /******** Setter ********/ + int setContainerType(const char* Type); + int setSearchClasses(std::vector SearchClasses); + int setCreateClasses(std::vector CreateClasses); + int setSearchable(bool Searchable); + /******** Getter ********/ + const char* getContainerType() const { return this->mContainerType; } + const std::vector* getSearchClasses() const { return &(this->mSearchClasses); } + const std::vector* getCreateClasses() const { return &(this->mCreateClasses); } + bool isSearchable() const { return this->mSearchable; } + unsigned int getChildCount() const { return this->mChildren->Count(); } + unsigned int getUpdateID() const { return this->mUpdateID; } + bool isUpdated(); +}; + +class cUPnPClassVideoItem : public cUPnPClassItem { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPVideoItemMediator; +protected: + cString mGenre; // Genre + 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 + 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 ********/ + int setLongDescription(const char* LongDescription); + int setDescription(const char* Description); + int setPublishers(const char* Publishers); + int setGenre(const char* Genre); + int setLanguage(const char* Language); + int setRelations(const char* Relations); + int setDirectors(const char* Directors); + int setActors(const char* Actors); + int setProducers(const char* Producers); + int setRating(const char* Rating); + /******** Getter ********/ + const char* getGenre() const { return this->mGenre; } + const char* getLongDescription() const { return this->mLongDescription; } + const char* getDescription() const { return this->mDescription; } + const char* getPublishers() const { return this->mPublishers; } + const char* getLanguage() const { return this->mLanguage; } + const char* getRelations() const { return this->mRelations; } + const char* getActors() const { return this->mActors; } + const char* getProducers() const { return this->mProducers; } + const char* getDirectors() const { return this->mDirectors; } + const char* getRating() const { return this->mRating; } +}; + +class cUPnPClassVideoBroadcast : public cUPnPClassVideoItem { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPVideoBroadcastMediator; +protected: + cString mIcon; + cString mRegion; + int mChannelNr; + cString mChannelName; + 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 ********/ + int setIcon(const char* IconURI); + int setRegion(const char* Region); + int setChannelNr(int ChannelNr); + int setChannelName(const char* ChannelName); + /******** Getter ********/ + const char* getIcon() const { return this->mIcon; } + const char* getRegion() const { return this->mRegion; } + int getChannelNr() const { return this->mChannelNr; } + const char* getChannelName() const { return this->mChannelName; } +}; + +class cMediatorInterface { +public: + virtual ~cMediatorInterface(){}; + virtual cUPnPClassObject* createObject(const char* Title, bool Restricted) = 0; + virtual cUPnPClassObject* getObject(cUPnPObjectID ID) = 0; + virtual int saveObject(cUPnPClassObject* Object) = 0; + virtual int deleteObject(cUPnPClassObject* Object) = 0; + virtual int clearObject(cUPnPClassObject* Object) = 0; +}; + +typedef std::map tMediatorMap; + +class cUPnPObjectFactory { +private: + static cUPnPObjectFactory* mInstance; + cSQLiteDatabase* mDatabase; + tMediatorMap mMediators; + cMediatorInterface* findMediatorByID(cUPnPObjectID ID); + cMediatorInterface* findMediatorByClass(const char* Class); + cUPnPObjectFactory(); +public: + static cUPnPObjectFactory* getInstance(); + void registerMediator(const char* UPnPClass, cMediatorInterface* Mediator); + void unregisterMediator(const char* UPnPClass, bool freeMediator=true); + cUPnPClassObject* createObject(const char* UPnPClass, const char* Title, bool Restricted=true); + cUPnPClassObject* getObject(cUPnPObjectID ID); + int saveObject(cUPnPClassObject* Object); + int deleteObject(cUPnPClassObject* Object); + int clearObject(cUPnPClassObject* Object); +}; + +class cMediaDatabase; + +class cUPnPObjectMediator : public cMediatorInterface { +protected: + cSQLiteDatabase* mDatabase; + cMediaDatabase* mMediaDatabase; + cUPnPObjectMediator(cMediaDatabase* MediaDatabase); + virtual int initializeObject(cUPnPClassObject* Object, const char* Class, const char* Title, bool Restricted); + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + virtual ~cUPnPObjectMediator(); + virtual cUPnPClassObject* createObject(const char* Title, bool Restricted); + virtual cUPnPClassObject* getObject(cUPnPObjectID); + virtual int saveObject(cUPnPClassObject* Object); + virtual int deleteObject(cUPnPClassObject* Object); + virtual int clearObject(cUPnPClassObject* Object); +}; + +class cUPnPItemMediator : public cUPnPObjectMediator { +protected: + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + cUPnPItemMediator(cMediaDatabase* MediaDatabase); + virtual ~cUPnPItemMediator(){}; + virtual cUPnPClassItem* createObject(const char* Title, bool Restricted); + virtual cUPnPClassItem* getObject(cUPnPObjectID ID); +}; + +class cUPnPVideoItemMediator : public cUPnPItemMediator { +protected: + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + cUPnPVideoItemMediator(cMediaDatabase* MediaDatabase); + virtual ~cUPnPVideoItemMediator(){}; + virtual cUPnPClassVideoItem* createObject(const char* Title, bool Restricted); + virtual cUPnPClassVideoItem* getObject(cUPnPObjectID ID); +}; + +class cUPnPVideoBroadcastMediator : public cUPnPVideoItemMediator { +protected: + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + cUPnPVideoBroadcastMediator(cMediaDatabase* MediaDatabase); + virtual ~cUPnPVideoBroadcastMediator(){}; + virtual cUPnPClassVideoBroadcast* createObject(const char* Title, bool Restricted); + virtual cUPnPClassVideoBroadcast* getObject(cUPnPObjectID ID); +}; + +class cUPnPContainerMediator : public cUPnPObjectMediator { +protected: + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + cUPnPContainerMediator(cMediaDatabase* MediaDatabase); + virtual ~cUPnPContainerMediator(){}; + virtual cUPnPClassContainer* createObject(const char* Title, bool Restricted); + virtual cUPnPClassContainer* getObject(cUPnPObjectID ID); +}; + +#endif /* _OBJECT_H */ + diff --git a/database/resources.cpp b/database/resources.cpp new file mode 100644 index 0000000..f681a54 --- /dev/null +++ b/database/resources.cpp @@ -0,0 +1,282 @@ +/* + * File: resources.cpp + * Author: savop + * + * Created on 30. September 2009, 15:17 + */ + +#include +#include +#include "../upnpcomponents/dlna.h" +#include +#include "resources.h" + +cUPnPResources* cUPnPResources::mInstance = NULL; + +cUPnPResources::cUPnPResources(){ + this->mResources = new cHash; + this->mMediator = new cUPnPResourceMediator; + this->mDatabase = cSQLiteDatabase::getInstance(); +} + +cUPnPResources::~cUPnPResources(){ + delete this->mResources; + delete this->mMediator; +} + +cUPnPResources* cUPnPResources::getInstance(){ + if(!cUPnPResources::mInstance) + cUPnPResources::mInstance = new cUPnPResources(); + if(cUPnPResources::mInstance) return cUPnPResources::mInstance; + else return NULL; +} + +int cUPnPResources::loadResources(){ + cString Statement = cString::sprintf("SELECT %s FROM %s", + SQLITE_COL_RESOURCEID, + SQLITE_TABLE_RESOURCES + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; + cString Column = NULL, Value = NULL; + while(Rows->fetchRow(&Row)){ + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_RESOURCEID)){ + unsigned int ResourceID = (unsigned int)atoi(Value); + this->getResource(ResourceID); + } + } + } + return 0; +} + +int cUPnPResources::getResourcesOfObject(cUPnPClassObject* Object){ + cString Statement = cString::sprintf("SELECT %s FROM %s WHERE %s='%s'", + SQLITE_COL_RESOURCEID, + SQLITE_TABLE_RESOURCES, + SQLITE_COL_OBJECTID, + *Object->getID() + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; + cString Column = NULL, Value = NULL; + while(Rows->fetchRow(&Row)){ + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_RESOURCEID)){ + unsigned int ResourceID = (unsigned int)atoi(Value); + Object->addResource(this->getResource(ResourceID)); + } + } + } + return 0; +} + +cUPnPResource* cUPnPResources::getResource(unsigned int ResourceID){ + cUPnPResource* Resource; + if((Resource = this->mResources->Get(ResourceID))){ + MESSAGE("Found cached resource"); + return Resource; + } + else if((Resource = this->mMediator->getResource(ResourceID))){ + MESSAGE("Found resource in database"); + this->mResources->Add(Resource, ResourceID); + return Resource; + } + else { + ERROR("No such resource with ID '%d'", ResourceID); + return NULL; + } +} + +int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel* Channel){ + if(!Object || !Channel){ + ERROR("Invalid input arguments"); + return -1; + } + + DLNAProfile* Profile = cDlna::getInstance()->getProfileOfChannel(Channel); + const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Profile); + + MESSAGE("Protocol info: %s", ProtocolInfo); + + // Adapted from streamdev + int index = 0; + for(int i=0; Channel->Apid(i)!=0; i++, index++){ + MESSAGE("Analog channel %d", i); + cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); + cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); + Resource->mBitrate = 0; + Resource->mBitsPerSample = 0; + Resource->mColorDepth = 0; + Resource->mDuration = NULL; + Resource->mImportURI = NULL; + Resource->mResolution = NULL; + Resource->mSampleFrequency = 0; + Resource->mSize = 0; + Resource->mNrAudioChannels = 0; + Object->addResource(Resource); + this->mMediator->saveResource(Resource); + this->mResources->Add(Resource, Resource->getID()); + } + for(int i=0; Channel->Dpid(i)!=0; i++, index++){ + MESSAGE("Digital channel %d", i); + cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); + cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); + Resource->mBitrate = 0; + Resource->mBitsPerSample = 0; + Resource->mColorDepth = 0; + Resource->mDuration = NULL; + Resource->mImportURI = NULL; + Resource->mResolution = NULL; + Resource->mSampleFrequency = 0; + Resource->mSize = 0; + Object->addResource(Resource); + this->mMediator->saveResource(Resource); + this->mResources->Add(Resource, Resource->getID()); + } + + return 0; +} + +cUPnPResourceMediator::cUPnPResourceMediator(){ + this->mDatabase = cSQLiteDatabase::getInstance(); +} + +cUPnPResourceMediator::~cUPnPResourceMediator(){} + +cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ + cUPnPResource* Resource = new cUPnPResource; + Resource->mResourceID = ResourceID; + cString Statement = cString::sprintf("SELECT * FROM %s WHERE %s=%d", + SQLITE_TABLE_RESOURCES, + SQLITE_COL_RESOURCEID, + ResourceID + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return NULL; + } + cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; + if(!Rows->fetchRow(&Row)){ + ERROR("No such resource found"); + return NULL; + } + cString Column = NULL, Value = NULL; + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(SQLITE_COL_OBJECTID, Column)){ + Resource->mObjectID = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_PROTOCOLINFO, Column)){ + Resource->mProtocolInfo = Value; + } + else if(!strcasecmp(SQLITE_COL_RESOURCE, Column)){ + Resource->mResource = Value; + } + else if(!strcasecmp(SQLITE_COL_SIZE, Column)){ + Resource->mSize = atol(Value); + } + else if(!strcasecmp(SQLITE_COL_DURATION, Column)){ + Resource->mDuration = Value; + } + else if(!strcasecmp(SQLITE_COL_BITRATE, Column)){ + Resource->mBitrate = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_SAMPLEFREQUENCE, Column)){ + Resource->mSampleFrequency = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_BITSPERSAMPLE, Column)){ + Resource->mBitsPerSample = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_NOAUDIOCHANNELS, Column)){ + Resource->mNrAudioChannels = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_COLORDEPTH, Column)){ + Resource->mColorDepth = atoi(Value); + } + else if(!strcasecmp(SQLITE_COL_RESOLUTION, Column)){ + Resource->mResolution = Value; + } + else if(!strcasecmp(SQLITE_COL_CONTENTTYPE, Column)){ + Resource->mContentType = Value; + } + else if(!strcasecmp(SQLITE_COL_RESOURCETYPE, Column)){ + Resource->mResourceType = atoi(Value); + } + } + return Resource; +} + +int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ + cString Format = "UPDATE %s SET %s WHERE %s=%d"; + cString Sets = cString::sprintf("%s='%s'," + "%s='%s'," + "%s='%s'," + "%s=%ld," + "%s='%s'," + "%s=%d," + "%s=%d," + "%s=%d," + "%s=%d," + "%s=%d," + "%s='%s'," + "%s='%s'," + "%s=%d", + SQLITE_COL_OBJECTID, *Resource->mObjectID?*Resource->mObjectID:"NULL", + SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo?*Resource->mProtocolInfo:"NULL", + SQLITE_COL_RESOURCE, *Resource->mResource?*Resource->mResource:"NULL", + SQLITE_COL_SIZE, Resource->mSize, + SQLITE_COL_DURATION, *Resource->mDuration?*Resource->mDuration:"NULL", + SQLITE_COL_BITRATE, Resource->mBitrate, + SQLITE_COL_SAMPLEFREQUENCE, Resource->mSampleFrequency, + SQLITE_COL_BITSPERSAMPLE, Resource->mBitsPerSample, + SQLITE_COL_NOAUDIOCHANNELS, Resource->mNrAudioChannels, + SQLITE_COL_COLORDEPTH, Resource->mColorDepth, + SQLITE_COL_RESOLUTION, *Resource->mResolution?*Resource->mResolution:"NULL", + SQLITE_COL_CONTENTTYPE, *Resource->mContentType, + SQLITE_COL_RESOURCETYPE, Resource->mResourceType + ); + + cString Statement = cString::sprintf(Format, SQLITE_TABLE_RESOURCES, *Sets, SQLITE_COL_RESOURCEID, Resource->mResourceID); + + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + + return 0; +} + +cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo){ + cUPnPResource* Resource = new cUPnPResource; + cString Statement = cString::sprintf("INSERT INTO %s (%s,%s,%s,%s,%s) VALUES ('%s','%s','%s','%s','%d')", + SQLITE_TABLE_RESOURCES, + SQLITE_COL_OBJECTID, + SQLITE_COL_RESOURCE, + SQLITE_COL_PROTOCOLINFO, + SQLITE_COL_CONTENTTYPE, + SQLITE_COL_RESOURCETYPE, + *Object->getID(), + *ResourceFile, + *ProtocolInfo, + *ContentType, + ResourceType + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return NULL; + } + Resource->mResourceID = (unsigned int)this->mDatabase->getLastInsertRowID(); + Resource->mObjectID = Object->getID(); + Resource->mResource = ResourceFile; + Resource->mProtocolInfo = ProtocolInfo; + Resource->mContentType = ContentType; + Resource->mResourceType = ResourceType; + + return Resource; +} \ No newline at end of file diff --git a/database/resources.h b/database/resources.h new file mode 100644 index 0000000..46ec0d5 --- /dev/null +++ b/database/resources.h @@ -0,0 +1,51 @@ +/* + * 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 +#include + +class cUPnPResourceMediator; +class cMediaDatabase; + +class cUPnPResources { +private: + cHash* mResources; + static cUPnPResources* mInstance; + cUPnPResourceMediator* mMediator; + cSQLiteDatabase* mDatabase; + cUPnPResources(); +public: + int getResourcesOfObject(cUPnPClassObject* Object); + int loadResources(); + cUPnPResource* getResource(unsigned int ResourceID); + virtual ~cUPnPResources(); + static cUPnPResources* getInstance(); + int createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel* Channel); + int createFromRecording(cUPnPClassVideoItem* Object, cRecording* Recording); + int createFromFile(cUPnPClassItem* Object, cString File); +}; + +class cUPnPResourceMediator { + friend class cUPnPResources; +private: + cSQLiteDatabase* mDatabase; + cUPnPResourceMediator(); + unsigned int getNextResourceID(); +public: + virtual ~cUPnPResourceMediator(); + cUPnPResource* getResource(unsigned int ResourceID); + int saveResource(cUPnPResource* Resource); + cUPnPResource* newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo); +}; + +#endif /* _RESOURCES_H */ + diff --git a/misc/config.cpp b/misc/config.cpp new file mode 100644 index 0000000..59bf4a6 --- /dev/null +++ b/misc/config.cpp @@ -0,0 +1,109 @@ +/* + * File: config.cpp + * Author: savop + * + * Created on 15. August 2009, 13:03 + */ + +#include +#include +#include +#include "config.h" +#include "../common.h" + +cUPnPConfig::cUPnPConfig(){ + this->mParsedArgs = NULL; + this->mInterface = NULL; + this->mAddress = NULL; + this->mAutoSetup = 0; + this->mEnable = 0; + this->mPort = 0; +} + +cUPnPConfig::~cUPnPConfig(){} + +cUPnPConfig* cUPnPConfig::get(){ + if(cUPnPConfig::mInstance == NULL) + cUPnPConfig::mInstance = new cUPnPConfig(); + + if(cUPnPConfig::mInstance) + return cUPnPConfig::mInstance; + else return NULL; +} + +cUPnPConfig* cUPnPConfig::mInstance = NULL; + +bool cUPnPConfig::processArgs(int argc, char* argv[]){ + // Implement command line argument processing here if applicable. + static struct option long_options[] = { + {"int", required_argument, NULL, 'i'}, + {"address", required_argument, NULL, 'a'}, + {"port", required_argument, NULL, 'p'}, + {"autodetect", no_argument, NULL, 'd'} + }; + + int c = 0; + + // Check if anything went wrong by setting 'success' to false + // As there are multiple tests you may get a faulty behavior + // if the current value is not considered in latter tests. + // Asume that: Success = true; + // success && false = false; --> new value of success is false + // success && true = true; --> still true. + // So, in the case of true and only true, success contains the + // desired value. + bool success = true; + bool ifaceExcistent = false; + bool addExcistent = false; + + while((c = getopt_long(argc, argv, "i:a:p:v",long_options, NULL)) != -1){ + switch(c){ + case 'i': + if(addExcistent) { ERROR("Address given but must be absent!"); return false; } + success = this->parseSetup(SETUP_SERVER_INT, optarg) && success; + success = this->parseSetup(SETUP_SERVER_ADDRESS, NULL) && success; + success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; + ifaceExcistent = true; + break; + case 'a': + if(ifaceExcistent) { ERROR("Interface given but must be absent!"); return false; } + success = this->parseSetup(SETUP_SERVER_ADDRESS, optarg) && success; + success = this->parseSetup(SETUP_SERVER_INT, NULL) && success; + success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; + addExcistent = true; + break; + case 'p': + success = this->parseSetup(SETUP_SERVER_PORT, optarg) && success; + success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; + break; + case 'd': + success = this->parseSetup(SETUP_SERVER_AUTO, optarg) && success; + default: + return false; + } + } + + return success; +} + +bool cUPnPConfig::parseSetup(const char *Name, const char *Value) +{ + const char* ptr; + if(*this->mParsedArgs && (ptr = strstr(this->mParsedArgs,Name))!=NULL){ + MESSAGE("Skipping %s=%s, was overridden in command line.",Name, Value); + return true; + } + + MESSAGE("VARIABLE %s has value %s", Name, Value); + // Parse your own setup parameters and store their values. + if (!strcasecmp(Name, SETUP_SERVER_ENABLED)) this->mEnable = atoi(Value); + else if (!strcasecmp(Name, SETUP_SERVER_AUTO)) this->mAutoSetup = atoi(Value); + else if (!strcasecmp(Name, SETUP_SERVER_INT)) this->mInterface = strdup0(Value); // (Value) ? strn0cpy(this->mInterface, Value, strlen(this->mInterface)) : NULL; + else if (!strcasecmp(Name, SETUP_SERVER_ADDRESS)) this->mAddress = strdup0(Value); //(Value) ? strn0cpy(this->mAddress, Value, strlen(this->mAddress)) : NULL; + else if (!strcasecmp(Name, SETUP_SERVER_PORT)) this->mPort = atoi(Value); + else return false; + + this->mParsedArgs = cString::sprintf("%s%s",*this->mParsedArgs,Name); + + return true; +} \ No newline at end of file diff --git a/misc/config.h b/misc/config.h new file mode 100644 index 0000000..018213e --- /dev/null +++ b/misc/config.h @@ -0,0 +1,33 @@ +/* + * File: config.h + * Author: savop + * + * Created on 15. August 2009, 13:03 + */ + +#ifndef _CONFIG_H +#define _CONFIG_H + +#include +#include "../common.h" + +class cUPnPConfig { +private: + static cUPnPConfig* mInstance; + cString mParsedArgs; + cUPnPConfig(); +public: + char* mInterface; + char* mAddress; + int mPort; + int mEnable; + int mAutoSetup; +public: + virtual ~cUPnPConfig(); + static cUPnPConfig* get(); + bool parseSetup(const char* Name, const char* Value); + bool processArgs(int argc, char* argv[]); +}; + +#endif /* _CONFIG_H */ + diff --git a/misc/menusetup.cpp b/misc/menusetup.cpp new file mode 100644 index 0000000..9e8386f --- /dev/null +++ b/misc/menusetup.cpp @@ -0,0 +1,205 @@ +/* + * File: menusetup.cpp + * Author: savop + * + * Created on 19. April 2009, 16:50 + */ + +#include "config.h" +#include +#include "menusetup.h" +#include "../common.h" +#include "util.h" +#include +#include +#include +#include + + +cMenuSetupUPnP::cMenuSetupUPnP(){ + // Get server acitve state + MESSAGE("Creating menu"); + this->mCtrlBind = NULL; + this->mCtrlAutoMode = NULL; + this->mCtrlEnabled = NULL; + this->mCtrlPort = NULL; + this->mEnable = 0; + this->mDetectPort = 0; + this->mAutoSetup = 0; + this->mPort = 0; + this->mAddress = NULL; + this->mInterfaceIndex = 0; + this->Load(); + this->Update(); +} + +//cMenuSetupUPnP::~cMenuSetupUPnP() { +// delete this->mCtrlAutoMode; +// delete this->mCtrlEnabled; +// delete this->mCtrlPort; +// free(this->mAddress); +//} + +void cMenuSetupUPnP::Load(void){ + cUPnPConfig* Config = cUPnPConfig::get(); + this->mEnable = Config->mEnable; + this->mAutoSetup = Config->mAutoSetup; + this->mInterfaceIndex = this->getInterfaceIndex(Config->mInterface); + this->mAddress = strdup(Config->mAddress?Config->mAddress:"0.0.0.0"); + this->mPort = Config->mPort; + + if(Config->mPort==0) this->mDetectPort = 1; +} + +const char* const* cMenuSetupUPnP::getInterfaceList(int* count){ + char** Ifaces = getNetworkInterfaces(count); + char** IfaceList = new char*[++(*count)]; + IfaceList[0] = strdup(_("User defined")); + for(int i=0; i < *count-1; i++){ + IfaceList[i+1] = strdup(Ifaces[i]); + } + delete [] Ifaces; + return IfaceList; +} + +int cMenuSetupUPnP::getInterfaceIndex(const char* Interface){ + MESSAGE("Getting Index of %s", Interface); + if(!Interface) return 0; + int count; + int Index = 0; + const char* const* Ifaces = this->getInterfaceList(&count); + + for(int i=1; i < count; i++){ + if(!strcmp(Interface, Ifaces[i])){ + Index = i; + break; + } + } + delete [] Ifaces; + return Index; +} + +const char* cMenuSetupUPnP::getInterface(int Index){ + int count; + const char* const* Ifaces = this->getInterfaceList(&count); + + if(count < Index || Index < 1) return NULL; + const char* Interface = strdup0(Ifaces[Index]); + delete [] Ifaces; + return Interface; +} + +void cMenuSetupUPnP::Update(void){ + int Current = this->Current(); + this->Clear(); + // Add OSD menu item for enabling UPnP Server + this->Add(mCtrlEnabled = new cMenuEditBoolItem(_("Enable UPnP Server"),&this->mEnable,_("disabled"),_("enabled"))); + if(this->mEnable){ + cMenuEditIntItem* editPortItem = NULL; + this->Add(mCtrlAutoMode = new cMenuEditBoolItem(_("Auto detect settings"),&this->mAutoSetup,_("no"),_("yes"))); + // Add OSD menu item for IP address + int Count; + const char* const* Interfaces = this->getInterfaceList(&Count); + this->Add(mCtrlBind = new cMenuEditStraItem(_("Bind to network interface"), &this->mInterfaceIndex, Count, Interfaces)); + + cMenuEditIpItem* editIpItem; + if(this->mInterfaceIndex){ + const sockaddr_in* addr = getIPFromInterface(this->getInterface(this->mInterfaceIndex)); + char* IP = strdup(inet_ntoa(addr->sin_addr)); + editIpItem = new cMenuEditIpItem(_("Current IP address"),IP); + editIpItem->SetSelectable(false); + free(IP); + } + else { + editIpItem = new cMenuEditIpItem(_("Set IP address"),this->mAddress); + } + this->Add(editIpItem); + this->Add(mCtrlPort = new cMenuEditBoolItem(_("Select port"), &this->mDetectPort, _("auto"), _("user definied"))); + if(this->mDetectPort){ + this->Add(editPortItem = new cMenuEditIntItem(_("User specified port"), + &this->mPort, + SERVER_MIN_PORT, + SERVER_MAX_PORT + )); + } + + if(this->mAutoSetup){ + if(mCtrlPort) mCtrlPort->SetSelectable(false); + if(mCtrlBind) mCtrlBind->SetSelectable(false); + if(editPortItem) editPortItem->SetSelectable(false); + if(editIpItem) editIpItem->SetSelectable(false); + } + else { + if(mCtrlPort) mCtrlPort->SetSelectable(true); + if(mCtrlBind) mCtrlBind->SetSelectable(true); + if(editPortItem) editPortItem->SetSelectable(true); + if(editIpItem && !this->mInterfaceIndex) editIpItem->SetSelectable(true); + } + } + this->SetCurrent(this->Get(Current)); + this->Display(); +} + +eOSState cMenuSetupUPnP::ProcessKey(eKeys Key){ + + cOsdItem *Item = this->Get(this->Current()); + + eOSState State = cMenuSetupPage::ProcessKey(Key); + + Key = NORMALKEY(Key); + + if(Key != kRight && Key != kLeft){ + return State; + } + + if(Item == this->mCtrlEnabled){ + if(this->mEnable){ + this->Update(); + } + else if (!this->mEnable) { + this->Update(); + } + } + else if (Item == this->mCtrlPort){ + if(this->mDetectPort){ + this->Update(); + } + else if(!this->mDetectPort) { + this->Update(); + } + } + else if (Item == this->mCtrlAutoMode){ + if(this->mAutoSetup){ + this->Update(); + } + else if(!this->mAutoSetup) { + this->Update(); + } + } + else if(Item == this->mCtrlBind){ +// if(!this->mInterfaceIndex){ +// this->Update(); +// } +// else if(!this->mInterfaceIndex){ +// this->Update(); +// } + this->Update(); + } + return State; +} + +void cMenuSetupUPnP::Store(void){ + cUPnPConfig* Config = cUPnPConfig::get(); + Config->mAddress = strdup0(this->mAddress); + Config->mAutoSetup = this->mAutoSetup; + Config->mEnable = this->mEnable; + Config->mInterface = strdup0(this->getInterface(this->mInterfaceIndex)); + Config->mPort = (this->mDetectPort) ? 0 : this->mPort; + + this->SetupStore(SETUP_SERVER_AUTO, this->mAutoSetup); + this->SetupStore(SETUP_SERVER_ENABLED, this->mEnable); + this->SetupStore(SETUP_SERVER_INT, this->getInterface(this->mInterfaceIndex)); + this->SetupStore(SETUP_SERVER_ADDRESS, this->mAddress); + this->SetupStore(SETUP_SERVER_PORT, this->mPort); + +} diff --git a/misc/menusetup.h b/misc/menusetup.h new file mode 100644 index 0000000..ae40e97 --- /dev/null +++ b/misc/menusetup.h @@ -0,0 +1,78 @@ +/* + * File: menusetup.h + * Author: savop + * + * Created on 19. April 2009, 16:50 + */ + +#ifndef _CMENUSETUPUPNP_H +#define _CMENUSETUPUPNP_H + +#include +#include "../server/server.h" +#include "config.h" + +/** + * The VDR setup page + * + * This class shows and manages the settings within the VDR setup OSD + * + * @author Denis Loh + * @version 0.0.1 + */ +class cMenuSetupUPnP : public cMenuSetupPage { +public: + cMenuSetupUPnP(); +// virtual ~cMenuSetupUPnP(); + virtual eOSState ProcessKey(eKeys Key); +protected: + virtual void Store(void); + void Update(void); + 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/misc/search.cpp b/misc/search.cpp new file mode 100644 index 0000000..deee8b0 --- /dev/null +++ b/misc/search.cpp @@ -0,0 +1,795 @@ +/* + * File: search.cpp + * Author: savop + * + * Created on 27. August 2009, 21:21 + */ + +// uncomment this to enable debuging of the grammar +//#define BOOST_SPIRIT_DEBUG + +#include +#include "search.h" +#include "../common.h" +#include +#include +#include + +using namespace std; +using namespace boost; +using namespace boost::spirit; + +// This is the standard callback function which will be overloaded +// with all the specific callbacks +typedef function2 expCallback; +typedef function1 propCallback; +typedef function1 opCallback; +typedef function1 charCallback; +typedef function1 intCallback; + +// The defined ColumnNames +struct cProperties : symbols { +//struct cProperties : symbols<> { + cProperties(){ + add +// (UPNP_PROP_OBJECTID, UPNP_PROP_OBJECTID) +// (UPNP_PROP_PARENTID, UPNP_PROP_PARENTID) +// (UPNP_PROP_RESTRICTED, UPNP_PROP_RESTRICTED) +// (UPNP_PROP_CLASS, UPNP_PROP_CLASS) +// (UPNP_PROP_CLASSNAME, UPNP_PROP_CLASSNAME) +// (UPNP_PROP_WRITESTATUS, UPNP_PROP_WRITESTATUS) +// (UPNP_PROP_CHILDCOUNT, UPNP_PROP_CHILDCOUNT) +// (UPNP_PROP_REFERENCEID, UPNP_PROP_REFERENCEID) +// (UPNP_PROP_TITLE, UPNP_PROP_TITLE) +// (UPNP_PROP_CREATOR, UPNP_PROP_CREATOR) +// ("dc:description", "Description") +// ("dc:date", "Date") +// ("res", "Resource") +// ("res@bitrate", "Bitrate") +// ("res@duration", "Duration") +// ("res@size", "Size") +// ("res@sampleFrequency", "SampleFrequency") +// ("res@resolution", "Resolution") +// ("res@protocolInfo", "ProtocolInfo") +// ; + (UPNP_PROP_OBJECTID,UPNP_PROP_OBJECTID) + (UPNP_PROP_PARENTID,UPNP_PROP_PARENTID) + (UPNP_PROP_TITLE,UPNP_PROP_TITLE) + (UPNP_PROP_CREATOR,UPNP_PROP_CREATOR) + (UPNP_PROP_RESTRICTED,UPNP_PROP_RESTRICTED) + (UPNP_PROP_WRITESTATUS,UPNP_PROP_WRITESTATUS) + (UPNP_PROP_CLASS,UPNP_PROP_CLASS) + (UPNP_PROP_CLASSNAME,UPNP_PROP_CLASSNAME) + (UPNP_PROP_SEARCHCLASS,UPNP_PROP_SEARCHCLASS) + (UPNP_PROP_SCLASSDERIVED,UPNP_PROP_SCLASSDERIVED) + (UPNP_PROP_REFERENCEID,UPNP_PROP_REFERENCEID) + (UPNP_PROP_SCLASSNAME,UPNP_PROP_SCLASSNAME) + (UPNP_PROP_SEARCHABLE,UPNP_PROP_SEARCHABLE) + (UPNP_PROP_CHILDCOUNT,UPNP_PROP_CHILDCOUNT) + (UPNP_PROP_RESOURCE,UPNP_PROP_RESOURCE) + (UPNP_PROP_PROTOCOLINFO,UPNP_PROP_PROTOCOLINFO) + (UPNP_PROP_SIZE,UPNP_PROP_SIZE) + (UPNP_PROP_DURATION,UPNP_PROP_DURATION) + (UPNP_PROP_BITRATE,UPNP_PROP_BITRATE) + (UPNP_PROP_SAMPLEFREQUENCE,UPNP_PROP_SAMPLEFREQUENCE) + (UPNP_PROP_BITSPERSAMPLE,UPNP_PROP_BITSPERSAMPLE) + (UPNP_PROP_NOAUDIOCHANNELS,UPNP_PROP_NOAUDIOCHANNELS) + (UPNP_PROP_COLORDEPTH,UPNP_PROP_COLORDEPTH) + (UPNP_PROP_RESOLUTION,UPNP_PROP_RESOLUTION) + (UPNP_PROP_GENRE,UPNP_PROP_GENRE) + (UPNP_PROP_LONGDESCRIPTION,UPNP_PROP_LONGDESCRIPTION) + (UPNP_PROP_PRODUCER,UPNP_PROP_PRODUCER) + (UPNP_PROP_RATING,UPNP_PROP_RATING) + (UPNP_PROP_ACTOR,UPNP_PROP_ACTOR) + (UPNP_PROP_DIRECTOR,UPNP_PROP_DIRECTOR) + (UPNP_PROP_DESCRIPTION,UPNP_PROP_DESCRIPTION) + (UPNP_PROP_PUBLISHER,UPNP_PROP_PUBLISHER) + (UPNP_PROP_LANGUAGE,UPNP_PROP_LANGUAGE) + (UPNP_PROP_RELATION,UPNP_PROP_RELATION) + (UPNP_PROP_STORAGEMEDIUM,UPNP_PROP_STORAGEMEDIUM) + (UPNP_PROP_DVDREGIONCODE,UPNP_PROP_DVDREGIONCODE) + (UPNP_PROP_CHANNELNAME,UPNP_PROP_CHANNELNAME) + (UPNP_PROP_SCHEDULEDSTARTTIME,UPNP_PROP_SCHEDULEDSTARTTIME) + (UPNP_PROP_SCHEDULEDENDTIME,UPNP_PROP_SCHEDULEDENDTIME) + (UPNP_PROP_ICON,UPNP_PROP_ICON) + (UPNP_PROP_REGION,UPNP_PROP_REGION) + (UPNP_PROP_CHANNELNR,UPNP_PROP_CHANNELNR) + (UPNP_PROP_RIGHTS,UPNP_PROP_RIGHTS) + (UPNP_PROP_RADIOCALLSIGN,UPNP_PROP_RADIOCALLSIGN) + (UPNP_PROP_RADIOSTATIONID,UPNP_PROP_RADIOSTATIONID) + (UPNP_PROP_RADIOBAND,UPNP_PROP_RADIOBAND) + (UPNP_PROP_CONTRIBUTOR,UPNP_PROP_CONTRIBUTOR) + (UPNP_PROP_DATE,UPNP_PROP_DATE) + (UPNP_PROP_ALBUM,UPNP_PROP_ALBUM) + (UPNP_PROP_ARTIST,UPNP_PROP_ARTIST) + (UPNP_PROP_DLNA_CONTAINERTYPE,UPNP_PROP_DLNA_CONTAINERTYPE) + ; + } +} Properties; + +struct cOperators : symbols { + cOperators(){ + add + ("=", "==") + ("!=", "!=") + ("<", "<") + (">", ">") + ("<=", "<=") + (">=", ">=") + ("contains", "LIKE") + ("doesNotContain", "NOT LIKE") + ("derivedfrom", "derivedFrom") + ; + } +} Operators; + +struct cConcatOperators : symbols { + cConcatOperators(){ + add + ("and", "AND") + ("or", "OR") + ; + } +} ConcatOperators; + +struct cExistanceOperator : symbols { + cExistanceOperator(){ + add + ("true", "NOT NULL") + ("false", "NULL") + ; + } +} Existance; + +// THE GRAMMAR! +// This is the grammar including the functors which calls the member functions +// of search. The callback definitions at the end of the constructor are +// essential. DO NOT MODIFY if you don't know how! +struct cSearchGrammar : public boost::spirit::grammar { + // The callbacks members + charCallback &endBrackedExp; + expCallback &pushSimpleExp; + opCallback &pushOperator; + expCallback &pushQuotedValue; + opCallback &pushExistance; + propCallback &pushProperty; + opCallback &pushConcatOp; + charCallback &startBrackedExp; + + // Constructor with the callback functions + cSearchGrammar( + charCallback &endBrackedExp, + expCallback &pushSimpleExp, + opCallback &pushOperator, + expCallback &pushQuotedValue, + opCallback &pushExistance, + propCallback &pushProperty, + opCallback &pushConcatOp, + charCallback &startBrackedExp): + endBrackedExp(endBrackedExp), + pushSimpleExp(pushSimpleExp), + pushOperator(pushOperator), + pushQuotedValue(pushQuotedValue), + pushExistance(pushExistance), + pushProperty(pushProperty), + pushConcatOp(pushConcatOp), + startBrackedExp(startBrackedExp){} + + template + struct definition { + boost::spirit::rule searchCrit, searchExp, logOp, \ + relExp, binOp, relOp, stringOp, \ + existsOp, boolVal, quotedVal, \ + wChar, property, brackedExp, exp; + const boost::spirit::rule &start(){ + return searchCrit; + } + definition(const cSearchGrammar &self){ + /*************************************************************************\ + * * + * The grammar of a UPnP search expression * + * * + * searchCrit ::= searchExp | asterisk * + * * + * searchExp ::= relExp | * + * searchExp wChar+ logOp wChar+ searchExp | * + * '(' wChar* searchExp wChar* ')' * + * * + * logOp ::= 'and' | 'or' * + * * + * relExp ::= property wChar+ binOp wChar+ quotedVal | * + * property wChar* existsOp wChar+ boolVal * + * * + * binOp ::= relOp | stringOp * + * * + * relOp ::= '=' | '!=' | '<' | '<=' | '>' | '>=' * + * * + * stringOp ::= 'contains' | 'doesNotContain' | 'derivedfrom' * + * * + * existsOp ::= 'exists' * + * * + * boolVal ::= 'true' | 'false' * + * * + * quotedVal ::= dQuote escapedQuote dQuote * + * * + * wChar ::= space | hTab | lineFeed | * + * vTab | formFeed | return * + * * + * property ::= See ContentDirectory Section 2.4 * + * * + * escapedQuote ::= See ContentDirectory Section 2.3.1 * + * * + \*************************************************************************/ + searchCrit = searchExp | "*"; + + searchExp = exp >> *(+wChar >> logOp >> +wChar >> exp); + ; + + exp = relExp + | brackedExp + ; + + brackedExp = confix_p( + ch_p('(')[self.startBrackedExp], + *wChar >> searchExp >> *wChar, + ch_p(')')[self.endBrackedExp] + ) + ; + + logOp = ConcatOperators[self.pushConcatOp] + ; + + relExp = (property >> +wChar >> binOp >> +wChar >> quotedVal) [self.pushSimpleExp] + | (property >> +wChar >> existsOp >> +wChar >> boolVal) [self.pushSimpleExp] + ; + + binOp = Operators[self.pushOperator] + ; + + existsOp = str_p("exists") + ; + + boolVal = Existance[self.pushExistance] + ; + + quotedVal = confix_p('"', (*c_escape_ch_p)[self.pushQuotedValue], '"'); + + wChar = space_p; + + property = Properties[self.pushProperty] + ; + + // Debug mode + #ifdef BOOST_SPIRIT_DEBUG + BOOST_SPIRIT_DEBUG_NODE(searchCrit); + BOOST_SPIRIT_DEBUG_NODE(searchExp); + BOOST_SPIRIT_DEBUG_NODE(logOp); + BOOST_SPIRIT_DEBUG_NODE(relExp); + BOOST_SPIRIT_DEBUG_NODE(binOp); + BOOST_SPIRIT_DEBUG_NODE(relOp); + BOOST_SPIRIT_DEBUG_NODE(stringOp); + BOOST_SPIRIT_DEBUG_NODE(existsOp); + BOOST_SPIRIT_DEBUG_NODE(boolVal); + BOOST_SPIRIT_DEBUG_NODE(quotedVal); + BOOST_SPIRIT_DEBUG_NODE(wChar); + BOOST_SPIRIT_DEBUG_NODE(property); + #endif + } + }; +}; + +struct cSortGrammar : public boost::spirit::grammar { + // The callback members + propCallback &pushProperty; + charCallback &pushDirection; + + cSortGrammar( + propCallback &pushProperty, + charCallback &pushDirection): + pushProperty(pushProperty), + pushDirection(pushDirection){} + + template + struct definition { + boost::spirit::rule sortCrit, sortExp, property, direction; + + const boost::spirit::rule &start(){ + return sortCrit; + } + definition(const cSortGrammar &self){ + sortCrit = sortExp + ; + + sortExp = direction >> property >> *(ch_p(',') >> sortExp) + ; + + direction = sign_p[self.pushDirection] + ; + + property = Properties[self.pushProperty] + ; + } + }; +}; + +struct cFilterGrammar : public boost::spirit::grammar { + // The callback members + propCallback &pushProperty; + charCallback &pushAsterisk; + + cFilterGrammar( + propCallback &pushProperty, + charCallback &pushAsterisk): + pushProperty(pushProperty), + pushAsterisk(pushAsterisk){} + + template + struct definition { + boost::spirit::rule filterCrit, filterExp, property; + + const boost::spirit::rule &start(){ + return filterCrit; + } + definition(const cFilterGrammar &self){ + filterCrit = filterExp + | ch_p('*')[self.pushAsterisk] + ; + + filterExp = property >> *(ch_p(',') >> filterExp) + ; + + property = Properties[self.pushProperty] + ; + } + }; +}; + + /**********************************************\ + * * + * The actors * + * * + \**********************************************/ + +void cSearch::pushEndBrackedExp(const char){ + MESSAGE("Pushing closing bracket"); + if(asprintf(&this->SQLWhereStmt, "%s)", this->SQLWhereStmt)==-1){ + ERROR("Unable to allocate SQL Statement"); + return; + } +} + +void cSearch::pushExpression(const char*, const char*){ + + const char* Property = this->CurrentProperty; + const char* Operator = this->CurrentOperator; + const char* Value = this->CurrentValue; + + if(Property && Operator && Value){ + char* Statement; + long int IntegerValue; + + if(sscanf(Value, "%ld", &IntegerValue)!=EOF && sscanf(Value, "%*4d-%*2d-%*2d")==EOF){ + MESSAGE("Popping '%s %s %ld'",Property, Operator, IntegerValue); + if(asprintf(&Statement, "%s %s %ld", Property, Operator, IntegerValue)==-1){ + ERROR("Failed to allocated memory for statement."); + return; + } + } + else if(!strcasecmp(Operator, "IS")){ + MESSAGE("Popping '%s %s %s'", Property, Operator, Value); + if(asprintf(&Statement, "%s %s %s", Property, Operator, Value)==-1){ + ERROR("Failed to allocated memory for statement."); + return; + } + } + else { + MESSAGE("Popping '%s %s \"%s\"'",Property, Operator, Value); + if(asprintf(&Statement, "%s %s '%s'", Property, Operator, Value)==-1){ + ERROR("Failed to allocated memory for statement."); + return; + } + } + + if(asprintf(&this->SQLWhereStmt, "%s %s", this->SQLWhereStmt, Statement)==-1){ + ERROR("Unable to allocate SQL Statement"); + return; + } + + } + return; +} + +void cSearch::pushProperty(const char* Property){ + this->CurrentProperty = strdup(Property); + MESSAGE("Property %s added",Property); +} + +void cSearch::pushOperator(const char* Operator){ + this->CurrentOperator = strdup(Operator); + MESSAGE("Operator %s added",Operator); +} + +void cSearch::pushValue(const char* Start, const char* End){ + const char* Value = string(Start,End).c_str(); + if(!Value || !strcmp(Value,"")) return; + + this->CurrentValue = strdup(Value); + MESSAGE("Value %s added", Value); +} + +void cSearch::pushExistance(const char* Exists){ + this->CurrentValue = strdup(Exists); + this->CurrentOperator = strdup("IS"); + MESSAGE("Existance expression called. '%s'", Exists); +} + +void cSearch::pushConcatOp(const char* Operator){ + if(asprintf(&this->SQLWhereStmt, "%s %s ", this->SQLWhereStmt, Operator)==-1){ + ERROR("Unable to allocate SQL Statement"); + return; + } + + MESSAGE("Concatenation expression called. '%s'", Operator); +} + +void cSearch::pushStartBrackedExp(const char){ + MESSAGE("Pushing opening bracket"); + if(asprintf(&this->SQLWhereStmt, "%s(", this->SQLWhereStmt)==-1){ + ERROR("Unable to allocate SQL Statement"); + return; + } +} + + /**********************************************\ + * * + * The rest * + * * + \**********************************************/ + +cSearch* cSearch::mInstance = NULL; + +const char* cSearch::parse(const char* Search){ + if(!cSearch::mInstance) cSearch::mInstance = new cSearch(); + + if(cSearch::mInstance && cSearch::mInstance->parseCriteria(Search)){ + return cSearch::mInstance->SQLWhereStmt; + } + return NULL; +} + +bool cSearch::parseCriteria(const char* Search){ + + charCallback endBrackedExpCB(bind(&cSearch::pushEndBrackedExp, this, _1)); + expCallback pushSimpleExpCB(bind(&cSearch::pushExpression, this, _1, _2)); + opCallback pushOperatorCB(bind(&cSearch::pushOperator, this, _1)); + expCallback pushQuotedValueCB(bind(&cSearch::pushValue, this, _1, _2)); + opCallback pushExistanceCB(bind(&cSearch::pushExistance, this, _1)); + propCallback pushPropertyCB(bind(&cSearch::pushProperty, this, _1)); + opCallback pushConcatOpCB(bind(&cSearch::pushConcatOp, this, _1)); + charCallback startBrackedExpCB(bind(&cSearch::pushStartBrackedExp, this, _1)); + + // Craft the grammar + cSearchGrammar Grammar(endBrackedExpCB, + pushSimpleExpCB, + pushOperatorCB, + pushQuotedValueCB, + pushExistanceCB, + pushPropertyCB, + pushConcatOpCB, + startBrackedExpCB); + + MESSAGE("Starting search parsing"); + + if(boost::spirit::parse(Search, Grammar).full){ + MESSAGE("Parsing successful"); + } + else { + ERROR("Parsing failed"); + return false; + } + return true; +} + +cSearch::cSearch(){ + this->CurrentOperator = NULL; + this->CurrentProperty = NULL; + this->CurrentValue = NULL; + this->SQLWhereStmt = strdup(""); +} + +cSearch::~cSearch(){ + delete this->CurrentOperator; + delete this->CurrentProperty; + delete this->CurrentValue; +} + + /**********************************************\ + * * + * The filter * + * * + \**********************************************/ + +cFilterCriteria::cFilterCriteria(){ + this->mFilterList = NULL; +} + +cFilterCriteria::~cFilterCriteria(){} + +cStringList* cFilterCriteria::parse(const char* Filter){ + cFilterCriteria* FilterParser = new cFilterCriteria; + cStringList* List = NULL; + + if(FilterParser && FilterParser->parseFilter(Filter)){ + List = FilterParser->getFilterList(); + } + + delete FilterParser; + + return List; +} + +bool cFilterCriteria::parseFilter(const char* Filter){ + this->mFilterList = new cStringList; + + if(Filter && !strcasecmp(Filter, "")){ + MESSAGE("Empty filter"); + return true; + } + + charCallback pushAsteriskCB(bind(&cFilterCriteria::pushAsterisk,this,_1)); + propCallback pushPropertyCB(bind(&cFilterCriteria::pushProperty,this,_1)); + + cFilterGrammar Grammar(pushPropertyCB, pushAsteriskCB); + + if(boost::spirit::parse(Filter, Grammar).full){ + MESSAGE("Parse filter successful"); + } + else { + ERROR("Parsing filter failed"); + return false; + } + return true; +} + + /**********************************************\ + * * + * The actors * + * * + \**********************************************/ + +void cFilterCriteria::pushProperty(const char* Property){ + MESSAGE("Pushing property"); + this->mFilterList->Append(strdup(Property)); +} + +void cFilterCriteria::pushAsterisk(const char){ + MESSAGE("Pushing asterisk (*)"); + if(this->mFilterList) delete this->mFilterList; + this->mFilterList = NULL; + return; +} + + /**********************************************\ + * * + * The sorter * + * * + \**********************************************/ + +cSortCriteria::cSortCriteria(){ + this->mCriteriaList = new cList; + this->mCurrentCrit = NULL; +} + +cSortCriteria::~cSortCriteria(){} + +cList* cSortCriteria::parse(const char* Sort){ + cSortCriteria* SortParser = new cSortCriteria; + cList* List = NULL; + if(SortParser && SortParser->parseSort(Sort)){ + List = SortParser->getSortList(); + } + + delete SortParser; + + return List; +} + +bool cSortCriteria::parseSort(const char* Sort){ + if(!Sort || !strcasecmp(Sort, "")){ + MESSAGE("Empty Sort"); + return true; + } + + charCallback pushDirectionCB(bind(&cSortCriteria::pushDirection,this,_1)); + propCallback pushPropertyCB(bind(&cSortCriteria::pushProperty,this,_1)); + + cSortGrammar Grammar(pushPropertyCB, pushDirectionCB); + + if(boost::spirit::parse(Sort, Grammar).full){ + MESSAGE("Parse Sort successful"); + } + else { + ERROR("Parsing Sort failed"); + return false; + } + return true; +} + + /**********************************************\ + * * + * The actors * + * * + \**********************************************/ + +void cSortCriteria::pushProperty(const char* Property){ + MESSAGE("Pushing property '%s'", Property); + this->mCurrentCrit->Property = strdup(Property); + this->mCriteriaList->Add(this->mCurrentCrit); + return; +} + +void cSortCriteria::pushDirection(const char Direction){ + MESSAGE("Pushing direction '%c'", Direction); + this->mCurrentCrit = new cSortCrit; + this->mCurrentCrit->SortDescending = (Direction=='-')?true:false; + return; +} + + /**********************************************\ + * * + * The pathparser * + * * + \**********************************************/ + +struct cWebserverSections : symbols<> { + cWebserverSections(){ + add + (UPNP_DIR_SHARES) + ; + } +} WebserverSections; + +struct cWebserverMethods : symbols { + cWebserverMethods(){ + add + ("browse", UPNP_WEB_METHOD_BROWSE) + ("download", UPNP_WEB_METHOD_DOWNLOAD) + ("search", UPNP_WEB_METHOD_SEARCH) + ("show", UPNP_WEB_METHOD_SHOW) + ("get", UPNP_WEB_METHOD_STREAM) + ; + } +} WebserverMethods; + +struct cPathParserGrammar : public boost::spirit::grammar { + + intCallback &pushSection; + intCallback &pushMethod; + expCallback &pushPropertyKey; + expCallback &pushPropertyValue; + + cPathParserGrammar(intCallback &pushSection, + intCallback &pushMethod, + expCallback &pushPropertyKey, + expCallback &pushPropertyValue): + pushSection(pushSection), + pushMethod(pushMethod), + pushPropertyKey(pushPropertyKey), + pushPropertyValue(pushPropertyValue){} + + template + struct definition { + boost::spirit::rule pathExp, section, method, methodProperties, + property, key, value, uncriticalChar; + + const boost::spirit::rule &start(){ + return pathExp; + } + definition(const cPathParserGrammar &self){ + pathExp = section >> ch_p('/') >> method >> ch_p('?') >> methodProperties + ; + + section = WebserverSections[self.pushSection] + ; + + method = WebserverMethods[self.pushMethod] + ; + + methodProperties = property >> *(ch_p('&') >> methodProperties) + ; + + property = key >> ch_p('=') >> value + ; + + key = (+alnum_p)[self.pushPropertyKey] + ; + + value = (*uncriticalChar)[self.pushPropertyValue] + ; + + uncriticalChar = chset_p("-_.%~0-9A-Za-z") + ; + } + }; +}; + +cPathParser::cPathParser(){ + this->mSection = 0; + this->mMethod = 0; +} + +cPathParser::~cPathParser(){} + +bool cPathParser::parse(const char* Path, int* Section, int* Method, propertyMap* Properties){ + cPathParser* Parser = new cPathParser(); + bool ret = (Parser && Parser->parsePath(Path, Section, Method, Properties)) ? true : false; + + delete Parser; + + return ret; +} + +bool cPathParser::parsePath(const char* Path, int* Section, int* Method, propertyMap* Properties){ + if(!Path){ + return false; + } + + intCallback pushSectionCB(bind(&cPathParser::pushSection,this,_1)); + intCallback pushMethodCB(bind(&cPathParser::pushMethod,this,_1)); + expCallback pushPropertyKeyCB(bind(&cPathParser::pushPropertyKey, this, _1, _2)); + expCallback pushPropertyValueCB(bind(&cPathParser::pushPropertyValue, this, _1, _2)); + + cPathParserGrammar Grammar(pushSectionCB, pushMethodCB, pushPropertyKeyCB, pushPropertyValueCB); + + if(boost::spirit::parse(Path, Grammar).full){ + MESSAGE("Parse path successful"); + *Section = this->mSection; + *Method = this->mMethod; + *Properties = this->mProperties; + return true; + } + else { + ERROR("Parsing path failed"); + return false; + } + + return true; +} + + /**********************************************\ + * * + * The actors * + * * + \**********************************************/ + +void cPathParser::pushPropertyKey(const char* Start, const char* End){ + char* Key = strndup(Start, End-Start); + + MESSAGE("Pushing key '%s'", Key); + + this->mKey = Key; + + free(Key); +} + +void cPathParser::pushPropertyValue(const char* Start, const char* End){ + char* Value = strndup(Start, End-Start); + + MESSAGE("Pushing value '%s'", Value); + // TODO: urlDecode Value + + if(*this->mKey){ + char* Key = strdup(this->mKey); + this->mProperties[Key] = Value; + } +} + +void cPathParser::pushMethod(int Method){ + MESSAGE("Pushing method '%d'", Method); + this->mMethod = Method; +} + +void cPathParser::pushSection(int Section){ + MESSAGE("Pushing section '%d'", Section); + this->mSection = Section; +} \ No newline at end of file diff --git a/misc/search.h b/misc/search.h new file mode 100644 index 0000000..df2442e --- /dev/null +++ b/misc/search.h @@ -0,0 +1,90 @@ +/* + * File: search.h + * Author: savop + * + * Created on 27. August 2009, 21:21 + */ + +#ifndef _SEARCH_H +#define _SEARCH_H + +#include +#include +#include "util.h" + +struct cSortCrit : public cListObject { + const char* Property; + bool SortDescending; +}; + +typedef std::map propertyMap; + +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(); + static bool parse(const char* Path, int* Section, int* Method, propertyMap* Properties); +}; + +class cSortCriteria { +private: + cSortCrit* mCurrentCrit; + cList* mCriteriaList; + bool parseSort(const char* Sort); + void pushProperty(const char* Property); + void pushDirection(const char Direction); + cList* getSortList() const { return this->mCriteriaList; } + cSortCriteria(); +public: + virtual ~cSortCriteria(); + static cList* parse(const char* Sort); +}; + +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(); + static cStringList* parse(const char* Filter); +}; + +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/misc/util.cpp b/misc/util.cpp new file mode 100644 index 0000000..dc75706 --- /dev/null +++ b/misc/util.cpp @@ -0,0 +1,488 @@ +/* + * File: util.cpp + * Author: savop, andreas + * + * Created on 21. Mai 2009, 21:25 + * + * Extracted from streamdev-server plugin common.c + * $Id: common.c,v 1.6 2008/03/31 10:34:26 schmirl Exp $ + */ +#include "util.h" +#include "../common.h" +#include +#include +#include +#include +#include +#include +#include + +char* substr(const char* str, unsigned int offset, unsigned int length){ + if(offset > strlen(str)) return NULL; + if(length > strlen(str+offset)) length = strlen(str+offset); + char* substring = (char*)malloc(sizeof(substring)*length+1); + strncpy(substring, str+offset, length); + substring[length] = '\0'; + return substring; +} + +const char* getMACFromInterface(const char* Interface) { + int fd; + struct ifreq ifr; + + fd = socket(AF_INET, SOCK_DGRAM, 0); + + ifr.ifr_addr.sa_family = AF_INET; + strncpy(ifr.ifr_name, Interface, IFNAMSIZ-1); + + ioctl(fd, SIOCGIFHWADDR, &ifr); + + close(fd); + + char *ret = new char[18]; + + sprintf(ret, "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x", + (unsigned char)ifr.ifr_hwaddr.sa_data[0], + (unsigned char)ifr.ifr_hwaddr.sa_data[1], + (unsigned char)ifr.ifr_hwaddr.sa_data[2], + (unsigned char)ifr.ifr_hwaddr.sa_data[3], + (unsigned char)ifr.ifr_hwaddr.sa_data[4], + (unsigned char)ifr.ifr_hwaddr.sa_data[5]); + + return ret; +} + +char** getNetworkInterfaces(int *count){ + int fd; + struct ifconf ifc; + struct ifreq ifr[10]; + int nifaces, i; + char** ifaces; + *count = 0; + + memset(&ifc,0,sizeof(ifc)); + ifc.ifc_buf = (char*) (ifr); + ifc.ifc_len = sizeof(ifr); + + fd = socket(AF_INET, SOCK_DGRAM, 0); + int ret = ioctl(fd, SIOCGIFCONF, &ifc); + close(fd); + if(ret==0){ + nifaces = ifc.ifc_len/sizeof(struct ifreq); + ifaces = new char* [nifaces+1]; + for(i = 0; i < nifaces; i++){ + ifaces[i] = new char[IFNAMSIZ]; + ifaces[i] = strdup(ifr[i].ifr_name); + } + ifaces[i] = NULL; + *count = nifaces; + return ifaces; + } + else { + return NULL; + } +} + +const sockaddr_in* getIPFromInterface(const char* Interface){ + if(Interface==NULL) return NULL; + int fd; + struct ifreq ifr; + fd = socket(AF_INET, SOCK_DGRAM, 0); + /* I want to get an IPv4 IP address */ + ifr.ifr_addr.sa_family = AF_INET; + /* I want IP address attached to "eth0" */ + strncpy(ifr.ifr_name, Interface, IFNAMSIZ-1); + int ret = ioctl(fd, SIOCGIFADDR, &ifr); + close(fd); + const sockaddr_in* IpAddress = new sockaddr_in; + if(ret==0){ + IpAddress = (sockaddr_in *)&ifr.ifr_addr; + return IpAddress; + } + else { + delete IpAddress; + return NULL; + } +} + +cMenuEditIpItem::cMenuEditIpItem(const char *Name, char *Value):cMenuEditItem(Name) { + value = Value; + curNum = -1; + pos = -1; + step = false; + Set(); +} + +cMenuEditIpItem::~cMenuEditIpItem() { +} + +void cMenuEditIpItem::Set(void) { + char buf[1000]; + if (pos >= 0) { + in_addr_t addr = inet_addr(value); + if ((int)addr == -1) + addr = 0; + int p = 0; + for (int i = 0; i < 4; ++i) { + p += snprintf(buf + p, sizeof(buf) - p, pos == i ? "[%d]" : "%d", + pos == i ? curNum : (addr >> (i * 8)) & 0xff); + if (i < 3) + buf[p++] = '.'; + } + SetValue(buf); + } else + SetValue(value); +} + +eOSState cMenuEditIpItem::ProcessKey(eKeys Key) { + in_addr addr; + addr.s_addr = inet_addr(value); + if ((int)addr.s_addr == -1) + addr.s_addr = 0; + + switch (Key) { + case kUp: + if (pos >= 0) { + if (curNum < 255) ++curNum; + } else + return cMenuEditItem::ProcessKey(Key); + break; + + case kDown: + if (pos >= 0) { + if (curNum > 0) --curNum; + } else + return cMenuEditItem::ProcessKey(Key); + break; + + case kOk: + if (pos >= 0) { + addr.s_addr = inet_addr(value); + if ((int)addr.s_addr == -1) + addr.s_addr = 0; + addr.s_addr &= ~(0xff << (pos * 8)); + addr.s_addr |= curNum << (pos * 8); + strcpy(value, inet_ntoa(addr)); + } else + return cMenuEditItem::ProcessKey(Key); + curNum = -1; + pos = -1; + break; + + case kRight: + if (pos >= 0) { + addr.s_addr = inet_addr(value); + if ((int)addr.s_addr == -1) + addr.s_addr = 0; + addr.s_addr &= ~(0xff << (pos * 8)); + addr.s_addr |= curNum << (pos * 8); + strcpy(value, inet_ntoa(addr)); + } + + if (pos == -1 || pos == 3) + pos = 0; + else + ++pos; + + curNum = (addr.s_addr >> (pos * 8)) & 0xff; + step = true; + break; + + case kLeft: + if (pos >= 0) { + addr.s_addr = inet_addr(value); + if ((int)addr.s_addr == -1) + addr.s_addr = 0; + addr.s_addr &= ~(0xff << (pos * 8)); + addr.s_addr |= curNum << (pos * 8); + strcpy(value, inet_ntoa(addr)); + } + + if (pos <= 0) + pos = 3; + else + --pos; + + curNum = (addr.s_addr >> (pos * 8)) & 0xff; + step = true; + break; + + case k0 ... k9: /* Netbeans reports error with this line (.. is okay but wrong) */ + if (pos == -1) + pos = 0; + + if (curNum == -1 || step) { + curNum = Key - k0; + step = false; + } else + curNum = curNum * 10 + (Key - k0); + + if ((curNum * 10 > 255) || (curNum == 0)) { + in_addr addr; + addr.s_addr = inet_addr(value); + if ((int)addr.s_addr == -1) + addr.s_addr = 0; + addr.s_addr &= ~(0xff << (pos * 8)); + addr.s_addr |= curNum << (pos * 8); + strcpy(value, inet_ntoa(addr)); + if (++pos == 4) + pos = 0; + curNum = (addr.s_addr >> (pos * 8)) & 0xff; + step = true; + } + break; + + default: + return cMenuEditItem::ProcessKey(Key); + } + + Set(); + return osContinue; +} + +const char* escapeSQLite(const char* Data, char** Buf){ + if(!Data){ + *Buf = NULL; + } + else { + std::string NewData = ""; + int Char = 0; + for(unsigned int i = 0; i < strlen(Data); i++){ + Char = Data[i]; + switch(Char){ + case L'\'': NewData += "''"; break; + default: NewData += Data[i]; break; + } + } + *Buf = strdup(NewData.c_str()); + } + return (*Buf); +} + +const char* escapeXMLCharacters(const char* Data, char** Buf){ + if(Data==NULL){ + ERROR("Escape XML: No data to escape"); + return NULL; + } + std::string NewData = ""; + int Char = 0; + for(unsigned int i = 0; i < strlen(Data); i++){ + Char = Data[i]; + switch(Char){ + case L'€': NewData += "€"; break; + case L'"': NewData += """; break; + case L'&': NewData += "&"; break; + case L'<': NewData += "<"; break; + case L'>': NewData += ">"; break; + case L'¡': NewData += "¡"; break; + case L'¢': NewData += "¢"; break; + case L'£': NewData += "£"; break; + case L'¤': NewData += "¤"; break; + case L'¥': NewData += "¥"; break; + case L'¦': NewData += "¦"; break; + case L'§': NewData += "§"; break; + case L'¨': NewData += "¨"; break; + case L'©': NewData += "©"; break; + case L'ª': NewData += "ª"; break; + case L'¬': NewData += "¬"; break; + case L'­': NewData += "­"; break; + case L'®': NewData += "®"; break; + case L'¯': NewData += "¯"; break; + case L'°': NewData += "°"; break; + case L'±': NewData += "±"; break; + case L'²': NewData += "²"; break; + case L'³': NewData += "³"; break; + case L'´': NewData += "´"; break; + case L'µ': NewData += "µ"; break; + case L'¶': NewData += "¶"; break; + case L'·': NewData += "·"; break; + case L'¸': NewData += "¸"; break; + case L'¹': NewData += "¹"; break; + case L'º': NewData += "º"; break; + case L'»': NewData += "»"; break; + case L'«': NewData += "«"; break; + case L'¼': NewData += "¼"; break; + case L'½': NewData += "½"; break; + case L'¾': NewData += "¾"; break; + case L'¿': NewData += "¿"; break; + case L'À': NewData += "À"; break; + case L'Á': NewData += "Á"; break; + case L'Â': NewData += "Â"; break; + case L'Ã': NewData += "Ã"; break; + case L'Ä': NewData += "Ä"; break; + case L'Å': NewData += "Å"; break; + case L'Æ': NewData += "Æ"; break; + case L'Ç': NewData += "Ç"; break; + case L'È': NewData += "È"; break; + case L'É': NewData += "É"; break; + case L'Ê': NewData += "Ê"; break; + case L'Ë': NewData += "Ë"; break; + case L'Ì': NewData += "Ì"; break; + case L'Í': NewData += "Í"; break; + case L'Î': NewData += "Î"; break; + case L'Ï': NewData += "Ï"; break; + case L'Ð': NewData += "Ð"; break; + case L'Ñ': NewData += "Ñ"; break; + case L'Ò': NewData += "Ò"; break; + case L'Ó': NewData += "Ó"; break; + case L'Ô': NewData += "Ô"; break; + case L'Õ': NewData += "Õ"; break; + case L'Ö': NewData += "Ö"; break; + case L'×': NewData += "×"; break; + case L'Ø': NewData += "Ø"; break; + case L'Ù': NewData += "Ù"; break; + case L'Ú': NewData += "Ú"; break; + case L'Û': NewData += "Û"; break; + case L'Ü': NewData += "Ü"; break; + case L'Ý': NewData += "Ý"; break; + case L'Þ': NewData += "Þ"; break; + case L'ß': NewData += "ß"; break; + case L'à': NewData += "à"; break; + case L'á': NewData += "á"; break; + case L'â': NewData += "â"; break; + case L'ã': NewData += "ã"; break; + case L'ä': NewData += "ä"; break; + case L'å': NewData += "å"; break; + case L'æ': NewData += "æ"; break; + case L'ç': NewData += "ç"; break; + case L'è': NewData += "è"; break; + case L'é': NewData += "é"; break; + case L'ê': NewData += "ê"; break; + case L'ë': NewData += "ë"; break; + case L'ì': NewData += "ì"; break; + case L'í': NewData += "í"; break; + case L'î': NewData += "î"; break; + case L'ï': NewData += "ï"; break; + case L'ð': NewData += "ð"; break; + case L'ñ': NewData += "ñ"; break; + case L'ò': NewData += "ò"; break; + case L'ó': NewData += "ó"; break; + case L'ô': NewData += "ô"; break; + case L'õ': NewData += "õ"; break; + case L'ö': NewData += "ö"; break; + case L'÷': NewData += "÷"; break; + case L'ø': NewData += "ø"; break; + case L'ù': NewData += "ù"; break; + case L'ú': NewData += "ú"; break; + case L'û': NewData += "û"; break; + case L'ü': NewData += "ü"; break; + case L'ý': NewData += "ý"; break; + case L'þ': NewData += "þ"; break; + default: NewData += Data[i]; break; + } + } + *Buf = strdup(NewData.c_str()); + return (*Buf); +} + +//Function copied from Intel SDK +/////////////////////////////////////////////////////////////////////////// +// +// 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. +// +/////////////////////////////////////////////////////////////////////////// +/******************************************************************************** + * SampleUtil_GetFirstDocumentItem + * + * Description: + * Given a document node, this routine searches for the first element + * named by the input string item, and returns its value as a string. + * String must be freed by caller using free. + * Parameters: + * doc -- The DOM document from which to extract the value + * item -- The item to search for + * + * + ********************************************************************************/ +char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int* error ) { + IXML_NodeList *nodeList = NULL; + IXML_Node *textNode = NULL; + IXML_Node *tmpNode = NULL; + + char *ret = NULL; + *error = 0; + + nodeList = ixmlDocument_getElementsByTagName( doc, ( char * )item ); + + if( nodeList != NULL ) { + if( ( tmpNode = ixmlNodeList_item( nodeList, 0 ) ) ) { + + textNode = ixmlNode_getFirstChild( tmpNode ); + + if(textNode != NULL){ + ret = strdup( ixmlNode_getNodeValue( textNode ) ); + } + } + } else { + *error = -1; + } + + if( nodeList != NULL) { + ixmlNodeList_free( nodeList ); + } + + + return ret; +} + +int ixmlAddProperty(IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ + if(!node) return -1; + IXML_Element* PropertyNode = NULL; + + const char* attribute = att(upnpproperty); + const char* property = prop(upnpproperty); + if(attribute){ + if(strcasecmp(property,"")){ + ixmlElement_setAttribute(node, attribute, value); + } + else { + IXML_NodeList* NodeList = ixmlElement_getElementsByTagName(node, property); + if(NodeList!=NULL){ + IXML_Node* Node = ixmlNodeList_item(NodeList, 0); + PropertyNode = (IXML_Element*) ixmlNode_getFirstChild(Node); + if(PropertyNode){ + ixmlElement_setAttribute(PropertyNode, attribute, value); + } + else { + ixmlNodeList_free(NodeList); + return -1; + } + } + else { + return -1; + } + } + } + else { + PropertyNode = ixmlDocument_createElement(document, property); + IXML_Node* PropertyText = ixmlDocument_createTextNode(document, value); + ixmlNode_appendChild((IXML_Node*) PropertyNode, PropertyText); + ixmlNode_appendChild((IXML_Node*) node, (IXML_Node*) PropertyNode); + } + return 0; +} diff --git a/misc/util.h b/misc/util.h new file mode 100644 index 0000000..ffedd67 --- /dev/null +++ b/misc/util.h @@ -0,0 +1,45 @@ +/* + * File: util.h + * Author: savop + * + * Created on 21. Mai 2009, 21:25 + */ + +#ifndef _UTIL_H +#define _UTIL_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +struct strCmp { bool operator()(const char* s1, const char* s2) const { return (strcmp(s1,s2) < 0); }}; +const sockaddr_in* getIPFromInterface(const char* Interface); +const char* getMACFromInterface(const char* Interface); +char** getNetworkInterfaces(int *count); +char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int* error ); +int ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, const char* upnpproperty, const char* value ); +char* substr(const char* str, unsigned int offset, unsigned int length); +} +#endif + +const char* escapeSQLite(const char* Data, char** Buf); +const char* escapeXMLCharacters(const char* Data, char** Buf); + +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/receiver/filehandle.cpp b/receiver/filehandle.cpp new file mode 100644 index 0000000..bc24f53 --- /dev/null +++ b/receiver/filehandle.cpp @@ -0,0 +1,8 @@ +/* + * File: filehandle.cpp + * Author: savop + * + * Created on 15. Oktober 2009, 10:49 + */ + +#include "filehandle.h" \ No newline at end of file diff --git a/receiver/filehandle.h b/receiver/filehandle.h new file mode 100644 index 0000000..37f06e8 --- /dev/null +++ b/receiver/filehandle.h @@ -0,0 +1,26 @@ +/* + * File: filehandle.h + * Author: savop + * + * Created on 15. Oktober 2009, 10:49 + */ + +#ifndef _FILEHANDLE_H +#define _FILEHANDLE_H + +#include +#include "../common.h" + +class cFileHandle { +public: + virtual void open(UpnpOpenFileMode mode) = 0; + virtual int read(char* buf, size_t buflen) = 0; + virtual int write(char* buf, size_t buflen) = 0; + virtual int seek(off_t offset, int whence) = 0; + virtual void close() = 0; + virtual ~cFileHandle(){}; +private: +}; + +#endif /* _FILEHANDLE_H */ + diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp new file mode 100644 index 0000000..593853f --- /dev/null +++ b/receiver/livereceiver.cpp @@ -0,0 +1,175 @@ +/* + * File: livereceiver.cpp + * Author: savop + * + * Created on 4. Juni 2009, 13:28 + */ + +#include +#include +#include +#include +#include +#include "livereceiver.h" + +cLiveReceiver* cLiveReceiver::newInstance(cChannel* Channel, int Priority){ + cDevice *Device = cDevice::GetDevice(Channel, Priority, true); + + if(!Device){ + ERROR("No matching device found to serve this channel!"); + return NULL; + } + + cLiveReceiver *Receiver = new cLiveReceiver(Channel, Device); + if(Receiver){ + MESSAGE("Receiver for channel \"%s\" created successfully.", Channel->Name()); + return Receiver; + } + else { + ERROR("Failed to create receiver!"); + return NULL; + } +} + +cLiveReceiver::cLiveReceiver(cChannel *Channel, cDevice *Device) +: cReceiver( Channel->GetChannelID(), 0, Channel->Vpid(), Channel->Apids(), Channel->Dpids(), Channel->Spids()), + mDevice(Device), mChannel(Channel){ + this->mLiveBuffer = NULL; + this->mOutputBuffer = NULL; + this->mFrameDetector = NULL; +} + +cLiveReceiver::~cLiveReceiver(void){ + if(this->IsAttached()) + this->Detach(); +} + +void cLiveReceiver::open(UpnpOpenFileMode){ + this->mLiveBuffer = new cRingBufferLinear(RECEIVER_LIVEBUFFER_SIZE, RECEIVER_RINGBUFFER_MARGIN, true, "Live TV buffer"); + this->mOutputBuffer = new cRingBufferLinear(RECEIVER_OUTPUTBUFFER_SIZE, RECEIVER_RINGBUFFER_MARGIN, true, "Streaming buffer"); + + this->mLiveBuffer->SetTimeouts(0, 100); + this->mOutputBuffer->SetTimeouts(0, 500); + + this->mFrameDetector = new cFrameDetector(this->mChannel->Vpid(), this->mChannel->Vtype()); + + this->mPatPmtGenerator.SetChannel(this->mChannel); + + this->mDevice->SwitchChannel(this->mChannel, false); + this->mDevice->AttachReceiver(this); +} + +void cLiveReceiver::Activate(bool On){ + if(On){ + this->Start(); + MESSAGE("Live receiver started."); + } + else { + if(this->Running()){ + this->Cancel(2); + } + MESSAGE("Live receiver stopped"); + } +} + +void cLiveReceiver::Receive(uchar* Data, int Length){ + if(this->Running()){ + int bytesWrote = this->mLiveBuffer->Put(Data, Length); + if(bytesWrote != Length && this->Running()){ + this->mLiveBuffer->ReportOverflow(Length - bytesWrote); + } + } +} + +void cLiveReceiver::Action(void){ + MESSAGE("Started buffering..."); + while(this->Running()){ + int bytesRead; + //MESSAGE("Buffer is filled with %d bytes", this->mLiveBuffer->Available()); + uchar* bytes = this->mLiveBuffer->Get(bytesRead); + if(bytes){ + int count = this->mFrameDetector->Analyze(bytes, bytesRead); + if(count){ + //MESSAGE("%d bytes analyzed", count); + //MESSAGE("%2.2f FPS", this->mFrameDetector->FramesPerSecond()); + if(!this->Running() && this->mFrameDetector->IndependentFrame()) + break; + if(this->mFrameDetector->Synced()){ + //MESSAGE("Frame detector synced to data stream"); + if(this->mFrameDetector->IndependentFrame()){ + this->mOutputBuffer->Put(this->mPatPmtGenerator.GetPat(), TS_SIZE); + int i = 0; + while(uchar* pmt = this->mPatPmtGenerator.GetPmt(i)){ + this->mOutputBuffer->Put(pmt, TS_SIZE); + } + } + int bytesWrote = this->mOutputBuffer->Put(bytes, count); + if(bytesWrote != count){ + this->mLiveBuffer->ReportOverflow(count - bytesWrote); + } + //MESSAGE("Wrote %d to output buffer", bytesWrote); + if(bytesWrote){ + this->mLiveBuffer->Del(bytesWrote); + } + else { + cCondWait::SleepMs(100); + } + } + else { + ERROR("Cannot sync to stream"); + } + } + } + } + MESSAGE("Receiver was detached from device"); +} + +int cLiveReceiver::read(char* buf, size_t buflen){ + int bytesRead; + if(!this->IsAttached()) + bytesRead = -1; + else { + while(!this->mOutputBuffer->Available()){ + WARNING("No data, waiting..."); + cCondWait::SleepMs(50); + if(!this->IsAttached()){ + MESSAGE("Lost device..."); + return 0; + } + } + + uchar* buffer = this->mOutputBuffer->Get(bytesRead); + if(buffer){ + if(buflen > (size_t)bytesRead){ + memcpy(buf,(char*)buffer,bytesRead); + this->mOutputBuffer->Del(bytesRead); + } + else { + memcpy(buf,(char*)buffer,buflen); + this->mOutputBuffer->Del(buflen); + } + } + + } + MESSAGE("Read %d bytes from live feed", bytesRead); + return bytesRead; +} + +int cLiveReceiver::seek(off_t, int){ + ERROR("Seeking not supported on broadcasts"); + return 0; +} + +int cLiveReceiver::write(char*, size_t){ + ERROR("Writing not allowed on broadcasts"); + return 0; +} + +void cLiveReceiver::close(){ + MESSAGE("Closing live receiver"); + this->Detach(); + delete this->mOutputBuffer; this->mOutputBuffer = NULL; + delete this->mLiveBuffer; this->mLiveBuffer = NULL; + this->mFrameDetector = NULL; + MESSAGE("Live receiver closed."); +} \ No newline at end of file diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h new file mode 100644 index 0000000..4632733 --- /dev/null +++ b/receiver/livereceiver.h @@ -0,0 +1,40 @@ +/* + * 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 +#include + +class cLiveReceiver : public cReceiver, public cThread, public cFileHandle { +public: + static cLiveReceiver* newInstance(cChannel *Channel, int Priority); + virtual ~cLiveReceiver(void); + 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 whence); + virtual void close(); +protected: + virtual void Receive(uchar *Data, int Length); + virtual void Activate(bool On); + 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/receiver/recplayer.cpp b/receiver/recplayer.cpp new file mode 100644 index 0000000..d968ae7 --- /dev/null +++ b/receiver/recplayer.cpp @@ -0,0 +1,171 @@ +/* + * File: recplayer.cpp + * Author: savop + * + * Created on 8. Juni 2009, 11:57 + */ + +#include +#include +#include +#include +#include "recplayer.h" + +cRecordingPlayer *cRecordingPlayer::newInstance(cRecording* Recording){ + if(Recording->IsPesRecording()){ + ERROR("Sorry, but only TS is supported, yet!"); + return NULL; + } + + cRecordingPlayer *Player = new cRecordingPlayer(Recording); + return Player; +} +cRecordingPlayer::~cRecordingPlayer() { + delete this->mOffsets; +} + +cRecordingPlayer::cRecordingPlayer(cRecording *Recording) { + MESSAGE("Created Recplayer"); + this->mFile = NULL; + this->mTotalLenght = 0; + this->mRecording = Recording; + this->mOffsets = new off_t[VDR_MAX_FILES_PER_RECORDING]; + this->mOffset = 0; + this->mIndex = 1; + +} + +void cRecordingPlayer::open(UpnpOpenFileMode){ + this->Scan(); +} + +void cRecordingPlayer::close(){ + delete [] this->mOffsets; + if(this->mFile) fclose(this->mFile); +} + +int cRecordingPlayer::write(char*, size_t){ + ERROR("Writing not allowed on recordings"); + return 0; +} + +int cRecordingPlayer::read(char* buf, size_t buflen){ + FILE *File; + off_t fileEndOffset = this->mOffsets[this->mIndex]; + if(this->mOffset > fileEndOffset){ + File = this->NextFile(); + } + else { + File = this->GetFile(); + } + // do not read more bytes than the actual file has + size_t bytesToRead = ((fileEndOffset - this->mOffset) < (off_t)buflen)? fileEndOffset - this->mOffset : buflen; + size_t bytesRead = fread((char*)buf, sizeof(char), bytesToRead, File); + + this->mOffset += (off_t)bytesRead; + + return (int)bytesRead; +} + +int cRecordingPlayer::seek(off_t offset, int origin){ + // Calculate the new offset + switch(origin){ + case SEEK_CUR: + if(this->mOffset + offset > this->mTotalLenght){ + ERROR("Can't read behind end of file!"); + return -1; + } + this->mOffset += (off_t)offset; + break; + case SEEK_END: + if(offset > 0){ + ERROR("Can't read behind end of file!"); + return -1; + } + this->mOffset = this->mTotalLenght + offset; + break; + case SEEK_SET: + if(offset > this->mTotalLenght){ + ERROR("Can't read behind end of file!"); + return -1; + } + this->mOffset = (off_t)offset; + break; + default: + ERROR("Unknown seek mode (%d)!", origin); + return -1; + } + // Seek to the very first file; + this->SeekInFile(1,0); + off_t fileEndOffset = this->mOffsets[this->mIndex]; + // Spin until the new offset is in range of a specific file + while(this->mOffset > (fileEndOffset = this->mOffsets[this->mIndex])){ + // If its not possible to switch to next file, there was an error + if(!this->NextFile()){ + ERROR("Offset %ld not in the range of a file!", offset); + return -1; + } + } + off_t relativeOffset = + this->mOffset - (this->mOffsets[this->mIndex-1]) + ? this->mOffsets[this->mIndex-1] + : 0; + if(!this->SeekInFile(this->mIndex, relativeOffset)){ + ERROR("Cannot set offset!"); + return -1; + } + return 0; +} + +void cRecordingPlayer::Scan(){ + MESSAGE("Scanning video files..."); + // Reset the offsets + int i = 1; + while(this->mOffsets[i++]) this->mOffsets[i] = 0; + MESSAGE("Offsets reseted."); + + i = 0; + FILE *File; + while((File = this->GetFile(i))){ + if(VDR_MAX_FILES_PER_RECORDING < i+1){ + ERROR("Maximum file offsets exceeded!"); + break; + } + fseek(File, 0, SEEK_END); + off_t offset = ftell(File); + MESSAGE("File %d has its last offset at %ld", i, offset); + this->mOffsets[i+1] = this->mOffsets[i] + offset; + this->mTotalLenght = this->mOffsets[i+1]; + i++; + } +} + +FILE *cRecordingPlayer::GetFile(int Index){ + // No Index given: set current index + if(Index == 0) Index = this->mIndex; + // Index not changed: return current file + if(this->mIndex == Index && this->mFile) return this->mFile; + + // Index changed: close open file and open new file + if(this->mFile) fclose(this->mFile); + char *filename = new char[VDR_FILENAME_BUFSIZE]; + snprintf(filename, VDR_FILENAME_BUFSIZE, VDR_RECORDFILE_PATTERN_TS, this->mRecording->FileName(), Index ); + MESSAGE("Filename: %s", filename); + this->mFile = NULL; + if(this->mFile = fopen(filename, "r")){ + this->mIndex = Index; + return this->mFile; + } + return NULL; +} + +FILE *cRecordingPlayer::NextFile(void){ + return this->GetFile(this->mIndex++); +} + +int cRecordingPlayer::SeekInFile(int Index, off_t Offset){ + FILE *File = this->GetFile(Index); + fseek(File, Offset, SEEK_SET); + return ftell(File); +} + diff --git a/receiver/recplayer.h b/receiver/recplayer.h new file mode 100644 index 0000000..8295539 --- /dev/null +++ b/receiver/recplayer.h @@ -0,0 +1,39 @@ +/* + * 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 + +class cRecordingPlayer : cFileHandle { +public: + 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 Scan(void); + cRecordingPlayer(cRecording *Recording); + FILE* GetFile(int Index = 0); + FILE* NextFile(void); + int SeekInFile(int Index, off_t Offset); + cRecording *mRecording; + off_t* mOffsets; + off_t mOffset; + off_t mTotalLenght; + int mIndex; + FILE *mFile; +}; + +#endif /* _RECPLAYER_H */ + diff --git a/server/server.cpp b/server/server.cpp new file mode 100644 index 0000000..56afcaa --- /dev/null +++ b/server/server.cpp @@ -0,0 +1,366 @@ +/* + * File: server.cpp + * Author: savop + * + * Created on 19. April 2009, 17:42 + */ + +#include +#include +#include +#include +#include +#include "server.h" +#include "../misc/util.h" +#include "../misc/config.h" +#include "../common.h" +#include "../upnpcomponents/dlna.h" +#include "../database/object.h" + +/**************************************************** + * + * The UPnP Server + * + * Handles incoming messages, UPnP connections + * and so on. + * + ****************************************************/ + +cConnectionManager* cUPnPServer::mConnectionManager = NULL; +cContentDirectory* cUPnPServer::mContentDirectory = NULL; + +cUPnPServer::cUPnPServer() { + this->mServerAddr = new sockaddr_in; + // Bugfix: this was necessary because there were + // some uninitialised bytes in the structure (Please recheck this!) + memset(this->mServerAddr,0,sizeof(sockaddr_in)); + this->mServerAddr->sin_family = AF_INET; + this->mServerAddr->sin_port = 0; + this->mIsRunning = false; + this->mIsAutoDetectionEnabled = true; + this->mIsEnabled = false; + this->mDeviceHandle = NULL; + this->mMediaDatabase = NULL; +} + +cUPnPServer::~cUPnPServer() { + delete this->mServerAddr; this->mServerAddr = NULL; + delete this->mMediaDatabase; +} + +bool cUPnPServer::init(void){ + + MESSAGE("Loading configuration..."); + cUPnPConfig* config = cUPnPConfig::get(); + this->enable(config->mEnable == 1 ? true : false); + if(!config->mAutoSetup){ + if(config->mInterface) + if(!this->setInterface(config->mInterface)){ + ERROR("Invalid network interface: %s", config->mInterface); + return false; + } + if(config->mAddress) + if(!this->setAddress(config->mAddress)){ + ERROR("Invalid IP address: %s", config->mAddress); + return false; + } + if(!this->setServerPort((short)config->mPort)){ + ERROR("Invalid port: %d", config->mPort); + return false; + } + } + else { + if(!this->setAutoDetection(config->mAutoSetup == 1 ? true : false)){ + ERROR("Invalid auto detection setting: %d", config->mAutoSetup); + return false; + } + if(!this->autoDetectSettings()){ + ERROR("Error while auto detecting settings."); + return false; + } + } + + MESSAGE("Initializing Intel UPnP SDK on %s:%d",inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); + int ret = 0; + ret = UpnpInit(inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); + + if (ret != UPNP_E_SUCCESS) { + // test if SDK was allready initiated + if (ret == UPNP_E_INIT) { + WARNING("SDK was allready initiated (no problem) - Errorcode: %d", ret); + } else { + ERROR("Error while init Intel SDK - Errorcode: %d", ret); + return false; + } + } + else { + if(!inet_aton(UpnpGetServerIpAddress(),&this->mServerAddr->sin_addr)){ + ERROR("Unable to set IP address"); + } + this->mServerAddr->sin_port = htons(UpnpGetServerPort()); + MESSAGE("Initializing succesfully at %s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); + } + + MESSAGE("Setting maximum packet size for SOAP requests"); + UpnpSetMaxContentLength(UPNP_SOAP_MAX_LEN); + + //set the root directory of the webserver + cString WebserverRootDir = cString::sprintf("%s%s", cPluginUpnp::getConfigDirectory(), UPNP_WEB_SERVER_ROOT_DIR); + + MESSAGE("Set web server root dir: %s", *WebserverRootDir ); + this->mWebServer = cUPnPWebServer::getInstance(WebserverRootDir); + MESSAGE("Initializing web server."); + if (!this->mWebServer->init()) { + ERROR("Error while setting web server root dir - Errorcode: %d", ret); + return false; + } + + //register media server device to SDK + cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); + + this->mDeviceDescription = cDlna::getInstance()->getDeviceDescription(URLBase); + + MESSAGE("Register Media Server Device"); + ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, + this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, + &cUPnPServer::upnpActionCallback, + &this->mDeviceHandle, + &this->mDeviceHandle); + if (ret != UPNP_E_SUCCESS) { + ERROR("Error while registering device - Errorcode: %d", ret); + return false; + } + + MESSAGE("Unregister server to cleanup previously started servers"); + ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); + if (ret != UPNP_E_SUCCESS) { + WARNING("Unregistering old devices failed"); + return false; + } + + MESSAGE("Register Media Server Device"); + ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, + this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, + &cUPnPServer::upnpActionCallback, + &this->mDeviceHandle, + &this->mDeviceHandle); + if (ret != UPNP_E_SUCCESS) { + ERROR("Error while registering device - Errorcode: %d", ret); + return false; + } + + MESSAGE("Initializing media database"); + this->mMediaDatabase = new cMediaDatabase; + if(!this->mMediaDatabase->init()){ + ERROR("Error while initializing database"); + return false; + } + + MESSAGE("Initializing connection manager"); + cUPnPServer::mConnectionManager = new cConnectionManager(this->mDeviceHandle); + MESSAGE("Initializing content directory"); + cUPnPServer::mContentDirectory = new cContentDirectory(this->mDeviceHandle, this->mMediaDatabase); + if(!cUPnPServer::mContentDirectory->Start()){ + ERROR("Unable to start content directory thread"); + return false; + } + + //send first advertisments + MESSAGE("Send first advertisements to publish start in network"); + ret = UpnpSendAdvertisement(this->mDeviceHandle, UPNP_ANNOUNCE_MAX_AGE); + if (ret != UPNP_E_SUCCESS) { + ERROR("Error while sending first advertisments - Errorcode: %d", ret); + return false; + } + + return true; +} + +bool cUPnPServer::uninit(void) { + MESSAGE("Shuting down content directory"); + delete cUPnPServer::mContentDirectory; cUPnPServer::mContentDirectory = NULL; + + MESSAGE("Shuting down connection manager"); + delete cUPnPServer::mConnectionManager; cUPnPServer::mConnectionManager = NULL; + + MESSAGE("Closing metadata database"); + delete this->mMediaDatabase; this->mMediaDatabase = NULL; + + MESSAGE("Close Intel SDK"); + // unregiser media server device from UPnP SDK + int ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); + if (ret != UPNP_E_SUCCESS) { + WARNING("No device registered"); + } + // send intel sdk message to shutdown + ret = UpnpFinish(); + + if (ret == UPNP_E_SUCCESS) { + MESSAGE("Close Intel SDK Successfull"); + return true; + } else { + ERROR("Intel SDK unintialized or already closed - Errorcode: %d", ret); + return false; + } +} + +int cUPnPServer::upnpActionCallback(Upnp_EventType eventtype, void *event, void *cookie) { + // only to remove warning while compiling because cookie is unused + cookie = NULL; + Upnp_Subscription_Request* eventRequest = NULL; + Upnp_Action_Request* actionRequest = NULL; + + //check committed event variable + if (event == NULL) { + ERROR("UPnP Callback - NULL request"); + return UPNP_E_BAD_REQUEST; + } + + switch (eventtype) { + case UPNP_CONTROL_ACTION_REQUEST: + actionRequest = (Upnp_Action_Request*) event; + + //check that request is for this device + if (strcmp(actionRequest->DevUDN, UPNP_DEVICE_UDN) != 0) { + ERROR("UPnP Callback - actions request not for this device"); + return UPNP_E_BAD_REQUEST; + } + + //find out which service was called + if (strcmp(actionRequest->ServiceID, UPNP_CMS_SERVICE_ID) == 0) { + // proceed action + return cUPnPServer::mConnectionManager->execute(actionRequest); + + } else if (strcmp(actionRequest->ServiceID, UPNP_CDS_SERVICE_ID) == 0) { + // proceed action + return cUPnPServer::mContentDirectory->execute(actionRequest); + } else { + ERROR("UPnP Callback - unsupported service called for control"); + return UPNP_E_BAD_REQUEST; + } + case UPNP_EVENT_SUBSCRIPTION_REQUEST: + eventRequest = (Upnp_Subscription_Request*) event; + + //check that request is for this device + if (strcmp(eventRequest->UDN, UPNP_DEVICE_UDN) != 0) { + ERROR("UPnP Callback - event request not for this device"); + return UPNP_E_BAD_REQUEST; + } + + if (strcmp(eventRequest->ServiceId, UPNP_CMS_SERVICE_ID) == 0) { + // handle event request + return cUPnPServer::mConnectionManager->subscribe(eventRequest); + + } else if (strcmp(eventRequest->ServiceId, UPNP_CDS_SERVICE_ID) == 0) { + // handle event request + return cUPnPServer::mContentDirectory->subscribe(eventRequest); + } else { + ERROR("UPnP Callback - unsupported service called for eventing"); + return UPNP_E_BAD_REQUEST; + } + + return UPNP_E_BAD_REQUEST; + default: + ERROR("UPnP Action Callback - Unsupported Event"); + return UPNP_E_BAD_REQUEST; + } + + return UPNP_E_BAD_REQUEST; +} + +bool cUPnPServer::autoDetectSettings(void){ + int count; + char** Ifaces = getNetworkInterfaces(&count); + int i=0; + bool ret = false; + MESSAGE("AUTODETECT: Found %d possible interfaces.", sizeof(Ifaces)); + while(Ifaces[i]){ + if(strcmp(Ifaces[i],"lo")!=0){ + // true || false == true + // false || false == false + ret = this->setInterface(strdup(Ifaces[i])) || ret; + } + i++; + } + delete [] Ifaces; + if(!ret){ + MESSAGE("AUTODETECT: No suitable interface. Giving up."); + return false; + } + this->setServerPort(0); + return true; +} + +bool cUPnPServer::start(void){ + if(!this->isRunning()){ + // Put all the stuff which shall be started with the server in here + // if the startup failed due any reason return false! + MESSAGE("Starting UPnP Server on %s:%d",inet_ntoa(this->getServerAddress()->sin_addr), ntohs(this->getServerAddress()->sin_port)); + MESSAGE("Using DLNA version: %s", DLNA_PROTOCOL_VERSION_STR); + this->mIsRunning = true; + // Start Media database thread + this->mMediaDatabase->Start(); + } + return true; +} + +void cUPnPServer::stop(void){ + if(this->isRunning()){ + MESSAGE("Call upnpServer STOP"); + this->uninit(); + this->mIsRunning = false; + } + return; +} + +bool cUPnPServer::restart(void){ + MESSAGE("Call upnpServer RESTART"); + this->stop(); + return this->start(); +} + +void cUPnPServer::enable(bool enabled){ + this->mIsEnabled = enabled; +} + +bool cUPnPServer::setInterface(const char* Interface){ + if(Interface != NULL) this->mInterface = Interface; + + if(*this->mInterface!=NULL){ + MESSAGE("Try to retrieve address for NIC %s",Interface); + const sockaddr_in* ipAddress = getIPFromInterface(Interface); + if(ipAddress!=NULL){ + memcpy(&this->mServerAddr->sin_addr,&ipAddress->sin_addr,sizeof(ipAddress->sin_addr)); + MESSAGE("NIC %s has the following IP: %s", *this->mInterface, inet_ntoa(this->mServerAddr->sin_addr)); + this->stop(); + return true; + } + delete ipAddress; + ERROR("Unable to obtain a valid IP address for NIC %s!",Interface); + } + this->mServerAddr = NULL; + return false; +} + +bool cUPnPServer::setServerPort(unsigned short port){ + // check if the port is in user range or 0 + if(port != 0 && port < SERVER_MIN_PORT) return false; + this->stop(); + this->mServerAddr->sin_port = htons(port); + return true; +} + +bool cUPnPServer::setAddress(const char* Address){ + if(inet_aton(Address, &this->mServerAddr->sin_addr) == 0) return false; + this->stop(); + return true; +} + +bool cUPnPServer::setAutoDetection(bool enable){ + this->mIsAutoDetectionEnabled = enable; + return true; +} + +sockaddr_in* cUPnPServer::getServerAddress() { + return this->mServerAddr; +} \ No newline at end of file diff --git a/server/server.h b/server/server.h new file mode 100644 index 0000000..72ed2c8 --- /dev/null +++ b/server/server.h @@ -0,0 +1,172 @@ +/* + * File: server.h + * Author: savop + * + * Created on 19. April 2009, 17:42 + */ + +#ifndef _SERVER_H +#define _SERVER_H + +#include +#include +#include +#include +#include "../misc/util.h" +#include "../common.h" +#include "../upnpcomponents/upnpwebserver.h" +#include "../database/metadata.h" +#include "../upnpcomponents/connectionmanager.h" +#include "../upnpcomponents/contentdirectory.h" +#include "../upnp.h" + +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. + */ + void enable(bool enabled); + /** + * Start the UPnP server + * + * This will start the UPnP server activities as a background task. + * + * @return 1 when the server started successfully, 0 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 1 when the server restarted successfully, 0 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); + 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 + * + * Returns 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 1 if the new server address is set, 0 otherwise + */ + bool setServerPort(unsigned short port); + /** + * The Interface to listen on + * + * Sets the listener interface, for instance 'eth1' or 'wlan0' + */ + 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. + */ + 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 + */ + bool setAutoDetection(bool enable); + /** + * Checks if the server is enabled + * + * This indicates if the server is currently enabled. + * + * @return 1 if the server is enabled, 0 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 1 if the server is running, 0 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 + */ + 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/upnp.cpp b/upnp.cpp new file mode 100644 index 0000000..0aadcf0 --- /dev/null +++ b/upnp.cpp @@ -0,0 +1,129 @@ +/* + * upnp.c: A plugin for the Video Disk Recorder + * + * See the README file for copyright information and how to reach the author. + * + * $Id$ + */ + +#include +#include "upnp.h" +#include "misc/menusetup.h" +#include "misc/config.h" + +cCondWait DatabaseLocker; + +static const char *VERSION = "0.0.1"; +static const char *DESCRIPTION = PLUGIN_DESCRIPTION; + +const char* cPluginUpnp::mConfigDirectory = NULL; + +cPluginUpnp::cPluginUpnp(void) +{ + // Initialize any member variables here. + // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL + // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! + this->mUpnpServer = new cUPnPServer(); +} + +cPluginUpnp::~cPluginUpnp() +{ + // Clean up after yourself! + delete this->mUpnpServer; +} + +const char* cPluginUpnp::getConfigDirectory(){ + return cPluginUpnp::mConfigDirectory; +} + +const char *cPluginUpnp::Version(void){ + return VERSION; +} + +const char *cPluginUpnp::Description(void) { + return DESCRIPTION; +} + +const char *cPluginUpnp::CommandLineHelp(void) +{ + // Return a string that describes all known command line options. + cString cmdHelp; + + cmdHelp = cString::sprintf( + " 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 --int= The server network\n" + " interface\n" + " e.g: eth0, wlan1 etc.\n" + " If given option '-a' must\n" + " be absent.\n" + " -a
--address=
The server IPv4 address.\n" + " If given option '-i' must\n" + " be absent.\n" + " -p --port= The server port\n" + " Supported ports:\n" + " %5d (auto detect)\n" + " %5d-%5d (user defined)\n", + 0, + SERVER_MIN_PORT, + SERVER_MAX_PORT + ); + return cmdHelp; +} + +bool cPluginUpnp::ProcessArgs(int argc, char *argv[]) +{ + return cUPnPConfig::get()->processArgs(argc, argv); +} + +bool cPluginUpnp::Initialize(void) +{ + // Initialize any background activities the plugin shall perform. + MESSAGE("######### LETS GET READY TO RUMBLE #########"); + + cPluginUpnp::mConfigDirectory = strdup(cPlugin::ConfigDirectory(this->Name())); + if(!cPluginUpnp::getConfigDirectory()){ + ERROR("Cannot set configuration directory"); + return false; + } + MESSAGE("Configuration directory: %s", cPluginUpnp::getConfigDirectory()); + DatabaseLocker.Signal(); + return this->mUpnpServer->init(); +} + +bool cPluginUpnp::Start(void) +{ + MESSAGE("Call plugin START"); + // Start any background activities the plugin shall perform. + return this->mUpnpServer->start(); + //return true; +} + +void cPluginUpnp::Stop(void) +{ + MESSAGE("Call plugin STOP"); + // Stop any background activities the plugin is performing. + this->mUpnpServer->stop(); +} + +cString cPluginUpnp::Active(void) +{ + // Return a message string if shutdown should be postponed + return this->mUpnpServer->isRunning() ? _("The UPnP server is still running."): NULL; +} + +cMenuSetupPage *cPluginUpnp::SetupMenu(void) +{ + // Return a setup menu in case the plugin supports one. + return new cMenuSetupUPnP(); +} + +bool cPluginUpnp::SetupParse(const char *Name, const char *Value) +{ + return cUPnPConfig::get()->parseSetup(Name, Value); +} + +VDRPLUGINCREATOR(cPluginUpnp); // Don't touch this! + diff --git a/upnp.h b/upnp.h new file mode 100644 index 0000000..5baa1cc --- /dev/null +++ b/upnp.h @@ -0,0 +1,42 @@ +/* + * File: upnp.h + * Author: savop + * + * Created on 17. April 2009, 20:53 + */ + +#ifndef _UPNP_H +#define _UPNP_H + +#include +#include +#include "common.h" +#include "server/server.h" + +class cUPnPServer; + +class cPluginUpnp : public cPlugin { +private: + // Add any member variables or functions you may need here. + cUPnPServer* mUpnpServer; + static const char* mConfigDirectory; +public: + cPluginUpnp(void); + virtual ~cPluginUpnp(); + virtual const char *Version(void); + virtual const char *Description(void); + virtual const char *CommandLineHelp(void); + virtual bool ProcessArgs(int argc, char *argv[]); + virtual bool Initialize(void); + virtual bool Start(void); + virtual void Stop(void); + virtual cString Active(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool SetupParse(const char *Name, const char *Value); + static const char* getConfigDirectory(); +}; + +extern cCondWait DatabaseLocker; + +#endif /* _UPNP_H */ + diff --git a/upnpcomponents/connectionmanager.cpp b/upnpcomponents/connectionmanager.cpp new file mode 100644 index 0000000..b2c7149 --- /dev/null +++ b/upnpcomponents/connectionmanager.cpp @@ -0,0 +1,393 @@ +/* + * File: connectionmanager.cpp + * Author: savop + * + * Created on 21. August 2009, 18:35 + */ + +#include "upnpservice.h" +#include +#include +#include +#include +#include "connectionmanager.h" +#include "dlna.h" + +cVirtualConnection::cVirtualConnection() : mRcsID(-1) {} + +cConnectionManager::cConnectionManager(UpnpDevice_Handle DeviceHandle) : cUpnpService(DeviceHandle) { + this->mVirtualConnections = new cList; + 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("Protocol info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + cString Result = cString::sprintf( + " \ + %s \ + \ + ", + 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("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( + " \ + %s \ + ", + 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("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( + "\ + %s\ + %s\ + %d\ + %s\ + %d\ + %d\ + %s\ + ", + 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("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("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("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("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/upnpcomponents/connectionmanager.h b/upnpcomponents/connectionmanager.h new file mode 100644 index 0000000..202df59 --- /dev/null +++ b/upnpcomponents/connectionmanager.h @@ -0,0 +1,67 @@ +/* + * File: connectionmanager.h + * Author: savop + * + * Created on 21. August 2009, 18:35 + */ + +#ifndef _CONNECTIONMANAGER_H +#define _CONNECTIONMANAGER_H + +#include "upnpservice.h" + +enum eConnectionStatus { + OK, + CONTENT_FORMAT_MISMATCH, + INSUFFICIENT_BANDWIDTH, + UNRELIABLE_CHANNEL, + UNKNOWN +}; + +enum eDirection { + OUTPUT, + INPUT +}; + +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); +}; + +class cConnectionManager : public cUpnpService { +public: + cConnectionManager(UpnpDevice_Handle DeviceHandle); + virtual ~cConnectionManager(); + virtual int execute(Upnp_Action_Request* Request); + virtual int subscribe(Upnp_Subscription_Request* Request); + bool setProtocolInfo(const char* ProtocolInfo); +private: + virtual void setError(Upnp_Action_Request* Request, int Error); + 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* mVirtualConnections; + cString mSupportedProtocols; +}; + +#endif /* _CONNECTIONMANAGER_H */ + diff --git a/upnpcomponents/contentdirectory.cpp b/upnpcomponents/contentdirectory.cpp new file mode 100644 index 0000000..a9afdfa --- /dev/null +++ b/upnpcomponents/contentdirectory.cpp @@ -0,0 +1,306 @@ +/* + * File: contentdirectory.cpp + * Author: savop + * + * Created on 21. August 2009, 16:12 + */ + +#include +#include +#include "contentdirectory.h" +#include "../common.h" +#include "../misc/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("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("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( + " \ + %s \ + %d \ + %d \ + %d \ + ", + 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( + " \ + %d \ + ", + 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("Sorry, no search capabilities yet"); + + cString Result = cString::sprintf( + " \ + %s \ + ", + 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("Sorry, no sort capabilities yet"); + + cString Result = cString::sprintf( + " \ + %s \ + ", + 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/upnpcomponents/contentdirectory.h b/upnpcomponents/contentdirectory.h new file mode 100644 index 0000000..a504fdc --- /dev/null +++ b/upnpcomponents/contentdirectory.h @@ -0,0 +1,38 @@ +/* + * File: contentdirectory.h + * Author: savop + * + * Created on 21. August 2009, 16:12 + */ + +#ifndef _CONTENTDIRECTORY_H +#define _CONTENTDIRECTORY_H + +#include +#include "upnpservice.h" +#include "../database/metadata.h" + +class cContentDirectory : public cUpnpService, public cThread { +public: + cContentDirectory(UpnpDevice_Handle DeviceHandle, cMediaDatabase* MediaDatabase); + virtual ~cContentDirectory(); + virtual int subscribe(Upnp_Subscription_Request* Request); + virtual int execute(Upnp_Action_Request* Request); + 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/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp new file mode 100644 index 0000000..a68c6db --- /dev/null +++ b/upnpcomponents/dlna.cpp @@ -0,0 +1,235 @@ +/* + * File: dlna.cpp + * Author: savop + * + * Created on 18. April 2009, 23:27 + */ + +#include +#include +#include "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 = new cRegisteredProfiles; + this->init(); +} + +cDlna::~cDlna() { + delete this->mRegisteredProfiles; +} + + +void cDlna::init(void){ + this->registerMainProfiles(); +} + +void cDlna::registerProfile(DLNAProfile* Profile, int Op, const char* Ps, int Ci, unsigned int Flags){ + cRegisteredProfile *RegisteredProfile = new cRegisteredProfile(); + RegisteredProfile->Profile = Profile; + RegisteredProfile->Operation = Op; + RegisteredProfile->PlaySpeeds = Ps; + RegisteredProfile->Conversion = Ci; + RegisteredProfile->PrimaryFlags = Flags; + this->mRegisteredProfiles->Add(RegisteredProfile); +} + +void cDlna::registerMainProfiles(){ + this->registerProfile(&DLNA_PROFILE_MPEG2_TS_SD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); + this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); +} + +const char* cDlna::getSupportedProtocols(){ + cString Protocols; + cRegisteredProfile* Profile; + for(Profile = this->mRegisteredProfiles->First(); Profile; Profile = this->mRegisteredProfiles->Next(Profile)){ + Protocols = cString::sprintf("%s%s%s",(*Protocols)?*Protocols:"",(*Protocols)?",":"",this->getRegisteredProtocolInfoString(Profile)); + } + return Protocols; +} + +const char* cDlna::getProtocolInfo(DLNAProfile *Prof){ + cRegisteredProfile* Profile; + for(Profile = this->mRegisteredProfiles->First(); Profile && Profile->Profile != Prof; Profile = this->mRegisteredProfiles->Next(Profile)){} + if(Profile){ + return this->getRegisteredProtocolInfoString(Profile); + } + return NULL; +} + +DLNAProfile* cDlna::getProfileOfChannel(cChannel* Channel){ + if(Channel == NULL) return NULL; + // Switching the video types of the DVB-Stream + switch(Channel->Vtype()){ + case 0x02: + return &DLNA_PROFILE_MPEG2_TS_SD_EU; + case 0x1B: + return &DLNA_PROFILE_AVC_TS_HD_EU; + default: + ERROR("Unknown video type %d for channel %s!", Channel->Vtype(), Channel->Name()); + return NULL; + } +} + +DLNAProfile* cDlna::getProfileOfRecording(cRecording* Recording){ + // Get the data of the first file of the recording + cString File = cString::sprintf(VDR_RECORDFILE_PATTERN_TS, Recording->FileName(), 1); + return this->getProfileOfFile(File); +} + +DLNAProfile* cDlna::getProfileOfFile(cString){ + WARNING("Not yet supported"); + return NULL; +} + +const char* cDlna::getRegisteredProtocolInfoString(cRegisteredProfile *Profile){ + cString DLNA4thField = NULL; + DLNA4thField = cString::sprintf("DLNA.ORG_PN=%s", Profile->Profile->ID); + if(Profile->Operation != -1) + DLNA4thField = cString::sprintf("%s;DLNA.ORG_OP=%d",*DLNA4thField,Profile->Operation); + if(Profile->PlaySpeeds != NULL) + DLNA4thField = cString::sprintf("%s;DLNA.ORG_PS=%s",*DLNA4thField,Profile->PlaySpeeds); + if(Profile->Conversion != -1) + DLNA4thField = cString::sprintf("%s;DLNA.ORG_CI=%d",*DLNA4thField,Profile->Conversion); + if(Profile->PrimaryFlags != 0) + DLNA4thField = cString::sprintf("%s;DLNA.ORG_FLAGS=%.8x%.24x",*DLNA4thField,Profile->PrimaryFlags,0); + + char* Protocol = strdup(cString::sprintf("http-get:*:%s:%s", Profile->Profile->mime, *DLNA4thField)); + return Protocol; +} + +const char* cDlna::getDeviceDescription(const char* URLBase){ + cString description = cString::sprintf( + " \ + \ + \ + 1 \ + 0 \ + \ + %s \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + <%s:X_DLNADOC>%s \ + \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + \ + ", + 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 description; +} \ No newline at end of file diff --git a/upnpcomponents/dlna.h b/upnpcomponents/dlna.h new file mode 100644 index 0000000..c05d69a --- /dev/null +++ b/upnpcomponents/dlna.h @@ -0,0 +1,64 @@ +/* + * File: dlna.h + * Author: savop + * + * Created on 18. April 2009, 23:27 + */ + +#ifndef _DLNA_H +#define _DLNA_H + +#include "../common.h" +#include +#include + +class cDlna; + +class cRegisteredProfile : public cListObject { + friend class cDlna; +private: + DLNAProfile* Profile; + int Operation; + const char* PlaySpeeds; + int Conversion; + int PrimaryFlags; +public: + cRegisteredProfile(){}; + virtual ~cRegisteredProfile(){}; +}; + +class cRegisteredProfiles : public cList { + friend class cDlna; +}; + +/** + * 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: + static cDlna* getInstance(void); + virtual ~cDlna(); + //const char* getProtocolInfo(UPnPObjectID OID); + const char* getDeviceDescription(const char* URLBase); + void registerProfile(DLNAProfile* Profile, int Op = -1, const char* Ps = NULL, int Ci = -1, unsigned int Flags = 0); + void registerMainProfiles(); + const char* getSupportedProtocols(); + const char* getProtocolInfo(DLNAProfile *Prof); + DLNAProfile* getProfileOfChannel(cChannel* Channel); + DLNAProfile* getProfileOfRecording(cRecording* Recording); + DLNAProfile* getProfileOfFile(cString File); +private: + const char* getRegisteredProtocolInfoString(cRegisteredProfile *Profile); + cDlna(); + void init(void); + static cDlna* mInstance; + cRegisteredProfiles* mRegisteredProfiles; +}; + +#endif /* _DLNA_H */ + diff --git a/upnpcomponents/upnpservice.cpp b/upnpcomponents/upnpservice.cpp new file mode 100644 index 0000000..a1d6a47 --- /dev/null +++ b/upnpcomponents/upnpservice.cpp @@ -0,0 +1,118 @@ +/* + * File: upnpservice.cpp + * Author: savop + * + * Created on 21. August 2009, 18:38 + */ + +#include "upnpservice.h" +#include "../common.h" +#include "../misc/util.h" + +cUpnpService::cUpnpService(UpnpDevice_Handle DeviceHandle) { + this->mDeviceHandle = DeviceHandle; +} + +int cUpnpService::parseIntegerValue(IXML_Document* Document, const char* Item, 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(IXML_Document* Document, const char* Item, 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 diff --git a/upnpcomponents/upnpservice.h b/upnpcomponents/upnpservice.h new file mode 100644 index 0000000..c8630b5 --- /dev/null +++ b/upnpcomponents/upnpservice.h @@ -0,0 +1,27 @@ +/* + * File: upnpservice.h + * Author: savop + * + * Created on 21. August 2009, 18:38 + */ + +#ifndef _UPNPSERVICE_H +#define _UPNPSERVICE_H + +#include + +class cUpnpService { +public: + cUpnpService(UpnpDevice_Handle DeviceHandle); + virtual ~cUpnpService(){}; + virtual int subscribe(Upnp_Subscription_Request* Request) = 0; + virtual int execute(Upnp_Action_Request* Request) = 0; +protected: + virtual void setError(Upnp_Action_Request* Request, int Error); + int parseIntegerValue(IN IXML_Document* Document, IN const char* Item, OUT int* Value); + int parseStringValue(IN IXML_Document* Document, IN const char* Item, OUT char** Value); + UpnpDevice_Handle mDeviceHandle; +}; + +#endif /* _UPNPSERVICE_H */ + diff --git a/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp new file mode 100644 index 0000000..9be3d6a --- /dev/null +++ b/upnpcomponents/upnpwebserver.cpp @@ -0,0 +1,335 @@ +/* + * File: upnpwebserver.cpp + * Author: savop + * + * Created on 30. Mai 2009, 18:13 + */ + +#include +#include +#include +#include +#include "upnpwebserver.h" +#include "../server/server.h" +#include "../receiver/livereceiver.h" +#include "../receiver/recplayer.h" +#include "../misc/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. + * + ******************************************************************************/ +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; + +}; + +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(){ + delete this->mRootdir; +} + +cUPnPWebServer* cUPnPWebServer::mInstance = NULL; + +UpnpVirtualDirCallbacks cUPnPWebServer::mVirtualDirCallbacks = { + cUPnPWebServer::getInfo, + cUPnPWebServer::open, + cUPnPWebServer::read, + cUPnPWebServer::write, + cUPnPWebServer::seek, + cUPnPWebServer::close +}; + +bool cUPnPWebServer::init(){ + MESSAGE("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("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("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; +} + +cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){ + if(cUPnPWebServer::mInstance == NULL) + cUPnPWebServer::mInstance = new cUPnPWebServer(rootdir); + + if(cUPnPWebServer::mInstance){ + return cUPnPWebServer::mInstance; + } + else return NULL; +} + +void cUPnPWebServer::free(){ + delete cUPnPWebServer::mInstance; +} + +int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ + MESSAGE("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("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("==== File info of Resource #%d ====", Resource->getID()); + MESSAGE("Size: %lld", finfo.file_length); + MESSAGE("Dir: %s", finfo.is_directory?"yes":"no"); + MESSAGE("Read: %s", finfo.is_readable?"allowed":"not allowed"); + MESSAGE("Last modified: %s", ctime(&(finfo.last_modified))); + MESSAGE("Content-type: %s", finfo.content_type); + } + } + } + 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("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("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 AudioID = atoi(strtok(NULL,":")); + MESSAGE("Try to create Receiver for Channel %s with Audio ID %d", ChannelID, AudioID); + 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: + // 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("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("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("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("Seeking on %s", *FileHandle->Filename); + return FileHandle->FileHandle->seek(offset, origin); +} + +int cUPnPWebServer::close(UpnpWebFileHandle fh){ + cWebFileHandle *FileHandle = (cWebFileHandle *)fh; + MESSAGE("Closing file %s", *FileHandle->Filename); + FileHandle->FileHandle->close(); + delete FileHandle->FileHandle; + delete FileHandle; + return 0; +} diff --git a/upnpcomponents/upnpwebserver.h b/upnpcomponents/upnpwebserver.h new file mode 100644 index 0000000..55ef260 --- /dev/null +++ b/upnpcomponents/upnpwebserver.h @@ -0,0 +1,123 @@ +/* + * File: upnpwebserver.h + * Author: savop + * + * Created on 30. Mai 2009, 18:13 + */ + +#ifndef _UPNPWEBSERVER_H +#define _UPNPWEBSERVER_H + +#include "../common.h" +#include + +class cUPnPWebServer { + friend class cUPnPServer; +private: + static cUPnPWebServer *mInstance; + static UpnpVirtualDirCallbacks mVirtualDirCallbacks; + const char* mRootdir; + cUPnPWebServer(const char* root = "/"); +protected: + bool enable(bool enable); + static void free(); +public: + bool init(); + static cUPnPWebServer* getInstance(const char* rootdir = "/"); + 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: + * - UPNP_READ : Opens the file for reading + * - 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 buflen 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 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 + * + * @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/web/xml/cds_scpd.xml b/web/xml/cds_scpd.xml new file mode 100644 index 0000000..dff4252 --- /dev/null +++ b/web/xml/cds_scpd.xml @@ -0,0 +1,145 @@ + + + +1 +0 + + + +GetSearchCapabilities + + +SearchCaps +out +SearchCapabilities + + + + +GetSortCapabilities + + +SortCaps +out +SortCapabilities + + + + +GetSystemUpdateID + + +Id +out +SystemUpdateID + + + + +Browse + + +ObjectID +in +A_ARG_TYPE_ObjectID + + +BrowseFlag +in +A_ARG_TYPE_BrowseFlag + + +Filter +in +A_ARG_TYPE_Filter + + +StartingIndex +in +A_ARG_TYPE_Index + + +RequestedCount +in +A_ARG_TYPE_Count + + +SortCriteria +in +A_ARG_TYPE_SortCriteria + + +Result +out +A_ARG_TYPE_Result + + +NumberReturned +out +A_ARG_TYPE_Count + + +TotalMatches +out +A_ARG_TYPE_Count + + +UpdateID +out +A_ARG_TYPE_UpdateID + + + + + + +A_ARG_TYPE_ObjectID +string + + +A_ARG_TYPE_Result +string + + +A_ARG_TYPE_BrowseFlag +string + +BrowseMetadata +BrowseDirectChildren + + + +A_ARG_TYPE_Filter +string + + +A_ARG_TYPE_SortCriteria +string + + +A_ARG_TYPE_Index +ui4 + + +A_ARG_TYPE_Count +ui4 + + +A_ARG_TYPE_UpdateID +ui4 + + +SearchCapabilities +string + + +SortCapabilities +string + + +SystemUpdateID +ui4 + + + + diff --git a/web/xml/cms_scpd.xml b/web/xml/cms_scpd.xml new file mode 100644 index 0000000..e4071f9 --- /dev/null +++ b/web/xml/cms_scpd.xml @@ -0,0 +1,133 @@ + + + + 1 + 0 + + + + GetProtocolInfo + + + Source + out + SourceProtocolInfo + + + Sink + out + SinkProtocolInfo + + + + + GetCurrentConnectionIDs + + + ConnectionIDs + out + CurrentConnectionIDs + + + + + GetCurrentConnectionInfo + + + ConnectionID + in + A_ARG_TYPE_ConnectionID + + + RcsID + out + A_ARG_TYPE_RcsID + + + AVTransportID + out + A_ARG_TYPE_AVTransportID + + + ProtocolInfo + out + A_ARG_TYPE_ProtocolInfo + + + PeerConnectionManager + out + A_ARG_TYPE_ConnectionManager + + + PeerConnectionID + out + A_ARG_TYPE_ConnectionID + + + Direction + out + A_ARG_TYPE_Direction + + + Status + out + A_ARG_TYPE_ConnectionStatus + + + + + + + SourceProtocolInfo + string + + + SinkProtocolInfo + string + + + CurrentConnectionIDs + string + + + A_ARG_TYPE_ConnectionStatus + string + + OK + ContentFormatMismatch + InsufficientBandwidth + UnreliableChannel + Unknown + + + + A_ARG_TYPE_ConnectionManager + string + + + A_ARG_TYPE_Direction + string + + Input + Output + + + + A_ARG_TYPE_ProtocolInfo + string + + + A_ARG_TYPE_ConnectionID + i4 + + + A_ARG_TYPE_AVTransportID + i4 + + + A_ARG_TYPE_RcsID + i4 + + + + -- cgit v1.2.3 From bde12e9e1467f185068b0ae139b2380377a47eb4 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Sat, 24 Oct 2009 16:45:15 +0200 Subject: Added a check if a channel has no valid resources --- common.h | 2 ++ database/database.h | 2 +- database/metadata.cpp | 37 +++++++++++++++++++++++++++++++++---- database/resources.cpp | 6 ++++++ server/server.cpp | 4 ++++ upnpcomponents/dlna.cpp | 1 + upnpcomponents/upnpwebserver.cpp | 15 +++++++++------ upnpcomponents/upnpwebserver.h | 2 +- 8 files changed, 57 insertions(+), 12 deletions(-) diff --git a/common.h b/common.h index 191dd3a..6d7177a 100644 --- a/common.h +++ b/common.h @@ -262,6 +262,8 @@ enum UPNP_RESOURCE_TYPES { * ****************************************************/ +#define UPNP_WEB_MAX_FILE_HANDLES 512 + #define UPNP_WEB_PRESENTATION_URL "/index.html" #define UPNP_WEB_SERVER_ROOT_DIR UPNP_DIR_PRESENTATION diff --git a/database/database.h b/database/database.h index fe91f2b..9df2c71 100644 --- a/database/database.h +++ b/database/database.h @@ -20,7 +20,7 @@ #define PK_RESOURCES TOSTRING(2) #define PK_SEARCHCLASSES TOSTRING(3) -#define SQLITE_FIRST_CUSTOMID TOSTRING(0) +#define SQLITE_FIRST_CUSTOMID TOSTRING(100) #define SQLITE_COLUMN_NAME_LENGTH 64 diff --git a/database/metadata.cpp b/database/metadata.cpp index ac19118..75adf98 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -186,16 +186,27 @@ int cMediaDatabase::prepareDatabase(){ Radio->addSearchClass(AudioBCClass); Radio->setSearchable(true); if(this->mFactory->saveObject(Radio)) return -1; + + cUPnPClassContainer* CustomVideos = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("User videos")); + CustomVideos->setID(6); + Video->addObject(CustomVideos); + CustomVideos->addSearchClass(VideoClass); + CustomVideos->setSearchable(true); + if(this->mFactory->saveObject(CustomVideos)) return -1; } return 0; } int cMediaDatabase::loadChannels(){ - MESSAGE("Loading channels from Database"); + MESSAGE("Loading channels"); cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); if(TV){ // Iterating channels cList* List = TV->getObjectList(); + bool noResource = false; + // TODO: Add to setup + // if an error occured while loading resources, add the channel anyway + bool addWithoutResources = false; for(cChannel* Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)){ bool inList = false; for(cUPnPClassVideoBroadcast* Child = (cUPnPClassVideoBroadcast*)List->First(); @@ -205,6 +216,7 @@ int cMediaDatabase::loadChannels(){ } if(!inList){ if(!Channel->GroupSep()){ + noResource = false; tChannelID ChannelID = Channel->GetChannelID(); MESSAGE("Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); cUPnPClassVideoBroadcast* ChannelItem; @@ -215,9 +227,14 @@ int cMediaDatabase::loadChannels(){ if(Channel->Alang(0)){ ChannelItem->setLanguage(Channel->Alang(0)); } - cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel); - TV->addObject(ChannelItem); - if(this->mFactory->saveObject(ChannelItem)) return -1; + if(cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel)){ + ERROR("Unable to get resources for this channel"); + noResource = true; + } + if(noResource && addWithoutResources) { + TV->addObject(ChannelItem); + if(this->mFactory->saveObject(ChannelItem)) return -1; + } } else { MESSAGE("Skipping group '%s'", Channel->Name()); @@ -234,6 +251,18 @@ int cMediaDatabase::loadChannels(){ return 0; } +//int cMediaDatabase::loadRecordings(){ +// MESSAGE("Loading recordings"); +// cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); +// if(Records){ +// // Iterating channels +// cList* List = Records->getObjectList(); +// for(cRecording* Record = Recordings.First(); Record; Record = Recordings.Next(Record)){ +// +// } +// } +//} + void cMediaDatabase::Action(){ time_t LastEPGUpdate = 0; while(this->Running()){ diff --git a/database/resources.cpp b/database/resources.cpp index f681a54..df2b354 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -101,6 +101,12 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel } DLNAProfile* Profile = cDlna::getInstance()->getProfileOfChannel(Channel); + + if(!Profile){ + ERROR("No profile found for Channel %s", *Channel->GetChannelID().ToString()); + return -1; + } + const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Profile); MESSAGE("Protocol info: %s", ProtocolInfo); diff --git a/server/server.cpp b/server/server.cpp index 56afcaa..feebcb1 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -186,6 +186,10 @@ bool cUPnPServer::uninit(void) { MESSAGE("Closing metadata database"); delete this->mMediaDatabase; this->mMediaDatabase = NULL; + MESSAGE("Closing the web server"); + this->mWebServer->uninit(); + delete this->mWebServer; + MESSAGE("Close Intel SDK"); // unregiser media server device from UPnP SDK int ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); diff --git a/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp index a68c6db..1d57d0e 100644 --- a/upnpcomponents/dlna.cpp +++ b/upnpcomponents/dlna.cpp @@ -72,6 +72,7 @@ DLNAProfile* cDlna::getProfileOfChannel(cChannel* Channel){ // Switching the video types of the DVB-Stream switch(Channel->Vtype()){ case 0x02: + // MPEG2 Video return &DLNA_PROFILE_MPEG2_TS_SD_EU; case 0x1B: return &DLNA_PROFILE_AVC_TS_HD_EU; diff --git a/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp index 9be3d6a..77572f5 100644 --- a/upnpcomponents/upnpwebserver.cpp +++ b/upnpcomponents/upnpwebserver.cpp @@ -95,7 +95,7 @@ cUPnPWebServer::cUPnPWebServer(const char* root) : mRootdir(root) { } cUPnPWebServer::~cUPnPWebServer(){ - delete this->mRootdir; + delete [] this->mRootdir; } cUPnPWebServer* cUPnPWebServer::mInstance = NULL; @@ -136,6 +136,13 @@ bool cUPnPWebServer::init(){ return true; } +bool cUPnPWebServer::uninit(){ + MESSAGE("Disabling the internal webserver"); + UpnpEnableWebserver(FALSE); + + MESSAGE("Closing open file transfers"); +} + cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){ if(cUPnPWebServer::mInstance == NULL) cUPnPWebServer::mInstance = new cUPnPWebServer(rootdir); @@ -146,10 +153,6 @@ cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){ else return NULL; } -void cUPnPWebServer::free(){ - delete cUPnPWebServer::mInstance; -} - int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ MESSAGE("Getting information of file '%s'", filename); @@ -332,4 +335,4 @@ int cUPnPWebServer::close(UpnpWebFileHandle fh){ delete FileHandle->FileHandle; delete FileHandle; return 0; -} +} \ No newline at end of file diff --git a/upnpcomponents/upnpwebserver.h b/upnpcomponents/upnpwebserver.h index 55ef260..613f97b 100644 --- a/upnpcomponents/upnpwebserver.h +++ b/upnpcomponents/upnpwebserver.h @@ -20,9 +20,9 @@ private: cUPnPWebServer(const char* root = "/"); protected: bool enable(bool enable); - static void free(); public: bool init(); + bool uninit(); static cUPnPWebServer* getInstance(const char* rootdir = "/"); virtual ~cUPnPWebServer(); //}; -- cgit v1.2.3 From c672d0018e24161434e63400f7dc23999d3f9c8a Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Sun, 25 Oct 2009 22:44:37 +0100 Subject: Solved some issues with database filling and loading --- common.h | 63 +++++++++-------- database/database.cpp | 3 + database/database.h | 26 +++++-- database/metadata.cpp | 142 ++++++++++++++++++++++++++++++++------- database/metadata.h | 2 + database/object.cpp | 15 +++-- database/object.h | 23 +++++++ upnpcomponents/upnpwebserver.cpp | 6 +- 8 files changed, 208 insertions(+), 72 deletions(-) diff --git a/common.h b/common.h index 6d7177a..6762b47 100644 --- a/common.h +++ b/common.h @@ -517,39 +517,36 @@ enum UPNP_WEB_METHODS { * ****************************************************/ -enum UPnPStorageMedia { - SM_UNKNOWN, - SM_DV, - SM_MINI_DV, - SM_VHS, - SM_W_VHS, - SM_S_VHS, - SM_D_VHS, - SM_VHSC, - SM_VIDEO8, - SM_HI8, - SM_CD_ROM, - SM_CD_DA, - SM_CD_R, - SM_CD_RW, - SM_VIDEO_CD, - SM_SACD, - SM_MD_AUDIO, - SM_MD_PICTURE, - SM_DVD_ROM, - SM_DVD_VIDEO, - SM_DVD_R_MINUS, - SM_DVD_RW_PLUS, - SM_DVD_RW_MINUS, - SM_DVD_RAM, - SM_DVD_AUDIO, - SM_DAT, - SM_LD, - SM_HDD, - SM_MICRO_MV, - SM_NETWORK, - SM_NONE -}; +#define UPNP_STORAGE_UNKNOWN "UNKNOWN" +#define UPNP_STORAGE_DV "DV" +#define UPNP_STORAGE_MINI_DV "MINI-DV" +#define UPNP_STORAGE_VHS "VHS" +#define UPNP_STORAGE_W_VHS "W-VHS" +#define UPNP_STORAGE_S_VHS "S-VHS" +#define UPNP_STORAGE_D_VHS "D-VHS" +#define UPNP_STORAGE_VHSC "VHSC" +#define UPNP_STORAGE_VIDEO8 "VIDEO8" +#define UPNP_STORAGE_HI8 "HI8" +#define UPNP_STORAGE_CD_ROM "CD-ROM" +#define UPNP_STORAGE_CD_DA "CD-DA" +#define UPNP_STORAGE_CD_R "CD-R" +#define UPNP_STORAGE_CD_RW "CD-RW" +#define UPNP_STORAGE_VIDEO_CD "VIDEO-CD" +#define UPNP_STORAGE_SACD "SACD" +#define UPNP_STORAGE_MD_AUDIO "MD-AUDIO" +#define UPNP_STORAGE_MD_PICTURE "MD-PICTURE" +#define UPNP_STORAGE_DVD_ROM "DVD-ROM" +#define UPNP_STORAGE_DVD_VIDEO "DVD-VIDEO" +#define UPNP_STORAGE_DVD_R_MINUS "DVD-R" +#define UPNP_STORAGE_DVD_RW_PLUS "DVD+RW" +#define UPNP_STORAGE_DVD_RW_MINUS "DVD-RW" +#define UPNP_STORAGE_DVD_RAM "DVD-RAM" +#define UPNP_STORAGE_DVD_AUDIO "DVD-AUDIO" +#define UPNP_STORAGE_DAT "DAT" +#define UPNP_STORAGE_LD "LD" +#define UPNP_STORAGE_HDD "HDD" +#define UPNP_STORAGE_MICRO_MV "MICRO-MV" +#define UPNP_STORAGE_NETWORK "NETWORK" /**************************************************** * diff --git a/database/database.cpp b/database/database.cpp index 22c41cd..9c08c00 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -169,6 +169,7 @@ void cSQLiteDatabase::startTransaction(){ } } this->execStatement("BEGIN TRANSACTION"); + MESSAGE("Start new transaction"); this->mActiveTransaction = true; } @@ -185,6 +186,7 @@ void cSQLiteDatabase::rollbackTransaction(){ int cSQLiteDatabase::initializeTables(){ int ret = 0; this->startTransaction(); + if(this->execStatement(SQLITE_CREATE_TABLE_ITEMFINDER)==-1) ret = -1; if(this->execStatement(SQLITE_CREATE_TABLE_SYSTEM)==-1) ret = -1; if(this->execStatement(SQLITE_CREATE_TABLE_PRIMARY_KEYS)==-1) ret = -1; if(this->execStatement(SQLITE_CREATE_TABLE_ALBUMS)==-1) ret = -1; @@ -213,6 +215,7 @@ int cSQLiteDatabase::initializeTables(){ int cSQLiteDatabase::initializeTriggers(){ int ret = 0; this->startTransaction(); + if(this->execStatement(SQLITE_TRIGGER_D_OBJECTS_ITEMFINDER)==-1) ret = -1; if(this->execStatement(SQLITE_TRIGGER_UPDATE_SYSTEM)==-1) ret = -1; if(this->execStatement(SQLITE_TRIGGER_UPDATE_OBJECTID)==-1) ret = -1; if(this->execStatement(SQLITE_TRIGGER_D_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; diff --git a/database/database.h b/database/database.h index 9df2c71..49c208d 100644 --- a/database/database.h +++ b/database/database.h @@ -12,8 +12,8 @@ #include #include "../common.h" -//#define SQLITE_PRINT_STATEMENTS -//#define SQLITE_PRINT_FETCHES +#define SQLITE_PRINT_STATEMENTS +#define SQLITE_PRINT_FETCHES #define SQLITE_CASCADE_DELETES #define PK_OBJECTS TOSTRING(1) @@ -40,6 +40,7 @@ #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" @@ -110,6 +111,7 @@ #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 @@ -292,6 +294,22 @@ "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 * @@ -325,7 +343,7 @@ "((SELECT " SQLITE_COL_PARENTID " FROM " SQLITE_TABLE_OBJECTS " "\ "WHERE " SQLITE_COL_PARENTID "=-1) IS NOT NULL) "\ "AND "\ - "(NEW." SQLITE_COL_PARENTID "=-1) "\ + "(NEW." SQLITE_COL_PARENTID "=-1)"\ ") THEN "\ "RAISE(" SQLITE_TRANSACTION_TYPE ","\ "'INSERT on table " SQLITE_TABLE_OBJECTS " violates constraint. "\ @@ -344,7 +362,7 @@ "WHERE " SQLITE_COL_PARENTID "=-1 "\ "AND " SQLITE_COL_OBJECTID "!=NEW." SQLITE_COL_OBJECTID " ) IS NOT NULL) "\ "AND "\ - "(NEW." SQLITE_COL_PARENTID "=-1) "\ + "(NEW." SQLITE_COL_PARENTID "=-1) AND (OLD." SQLITE_COL_PARENTID "!=-1) "\ ") THEN "\ "RAISE(" SQLITE_TRANSACTION_TYPE ","\ "'UPDATE on table " SQLITE_TABLE_OBJECTS " violates constraint. "\ diff --git a/database/metadata.cpp b/database/metadata.cpp index 75adf98..438d002 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #define KEY_SYSTEM_UPDATE_ID "SystemUpdateID" @@ -51,6 +52,10 @@ bool cMediaDatabase::init(){ ERROR("Loading channels failed"); return false; } +// if(this->loadRecordings()){ +// ERROR("Loading records failed"); +// return false; +// } return true; } @@ -101,18 +106,65 @@ cUPnPObjectID cMediaDatabase::getNextObjectID(){ } cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; + int ret = 0; if(!Rows->fetchRow(&Row)){ ERROR("No rows found"); + ret = 0; + } + else { + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, "Key")){ + this->mLastInsertObjectID = atoi(Value); + ret = this->mLastInsertObjectID; + } + } + } + delete Rows; + return ret; +} + +int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ + if(!Object || !FastFind){ + MESSAGE("Invalid fast find parameters"); + return -1; + } + cString Statement = cString::sprintf("INSERT OR REPLACE INTO %s (%s, %s) VALUES ('%s', '%s')", + SQLITE_TABLE_ITEMFINDER, + SQLITE_COL_OBJECTID, + SQLITE_COL_ITEMFINDER, + *Object->getID(), + FastFind + ); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +cUPnPClassObject* cMediaDatabase::getObjectByFastFind(const char* FastFind){ + if(!FastFind) return NULL; + MESSAGE("Try to find Object with identifier %s", FastFind); + cString Statement, Column, Value; + const char* Format = "SELECT %s FROM %s WHERE %s='%s'"; + Statement = cString::sprintf(Format, SQLITE_COL_OBJECTID, SQLITE_TABLE_ITEMFINDER, SQLITE_COL_ITEMFINDER, FastFind); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); return 0; } + cRows* Rows = this->mDatabase->getResultRows(); + cRow* Row; + if(!Rows->fetchRow(&Row)){ + ERROR("No rows found"); + return NULL; + } while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, "Key")){ - this->mLastInsertObjectID = atoi(Value); - return this->mLastInsertObjectID; + if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ + return this->getObjectByID(atoi(Value)); } } delete Rows; - return 0; + return NULL; } cUPnPClassObject* cMediaDatabase::getObjectByID(cUPnPObjectID ID){ @@ -201,25 +253,38 @@ int cMediaDatabase::loadChannels(){ MESSAGE("Loading channels"); cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); if(TV){ - // Iterating channels - cList* List = TV->getObjectList(); bool noResource = false; // TODO: Add to setup // if an error occured while loading resources, add the channel anyway bool addWithoutResources = false; - for(cChannel* Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)){ + cChannel* Channel = NULL; + for(int Index = 0; (Channel = Channels.Get(Index)); Index = Channels.GetNextNormal(Index)){ + // Iterating the channels +// for(Channel = Channels.First(); Channel; Channel = Channels.(Channel)){ bool inList = false; - for(cUPnPClassVideoBroadcast* Child = (cUPnPClassVideoBroadcast*)List->First(); - Child; - Child = (cUPnPClassVideoBroadcast*)List->Next(Child)){ - if(!strcasecmp(Child->getChannelName(),Channel->Name())){ inList = true; break; } - } + + tChannelID ChannelID = Channel->GetChannelID(); + MESSAGE("Determine if the channel %s is already listed", *ChannelID.ToString()); + cUPnPClassVideoBroadcast* ChannelItem = NULL; + + ChannelItem = (cUPnPClassVideoBroadcast*)this->getObjectByFastFind(ChannelID.ToString()); + + inList = (ChannelItem && TV->getObject(ChannelItem->getID())) ? true : false; + if(!inList){ - if(!Channel->GroupSep()){ + if(Channel->GroupSep()){ + MESSAGE("Skipping group '%s'", Channel->Name()); + // Skip channel groups + // Channel groups may be supported theoretically. However, DLNA states that a tuner needs + // a consecutive list of channels. A simple work-around may be a virtual tuner for each group. + } + else if(Channel->Vpid()==0){ + // TODO: add radio support + MESSAGE("Skipping radio '%s'", Channel->Name()); + } + else { noResource = false; - tChannelID ChannelID = Channel->GetChannelID(); MESSAGE("Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); - cUPnPClassVideoBroadcast* ChannelItem; ChannelItem = (cUPnPClassVideoBroadcast*)this->mFactory->createObject(UPNP_CLASS_VIDEOBC, Channel->Name()); ChannelItem->setChannelName(Channel->Name()); ChannelItem->setChannelNr(Channel->Number()); @@ -231,17 +296,16 @@ int cMediaDatabase::loadChannels(){ ERROR("Unable to get resources for this channel"); noResource = true; } - if(noResource && addWithoutResources) { + if(!noResource || addWithoutResources) { TV->addObject(ChannelItem); - if(this->mFactory->saveObject(ChannelItem)) return -1; + if(this->mFactory->saveObject(ChannelItem) || + this->addFastFind(ChannelItem, ChannelID.ToString())){ + this->mFactory->deleteObject(ChannelItem); + return -1; + } + MESSAGE("Successfuly added channel"); } } - else { - MESSAGE("Skipping group '%s'", Channel->Name()); - // Skip channel groups - // Channel groups may be supported theoretically. However, DLNA states that a tuner needs - // a consecutive list of channels. A simple work-around may be a virtual tuner for each group. - } } else { MESSAGE("Skipping %s, already in database", Channel->Name()); @@ -255,12 +319,38 @@ int cMediaDatabase::loadChannels(){ // MESSAGE("Loading recordings"); // cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); // if(Records){ -// // Iterating channels -// cList* List = Records->getObjectList(); -// for(cRecording* Record = Recordings.First(); Record; Record = Recordings.Next(Record)){ +// cRecording* Recording = NULL; +// for(Recording = Recordings.First(); Recording; Recording = Recordings.Next(Recording)){ +// // Iterating the records +// bool inList = false; +// +// MESSAGE("Determine if the channel %s is already listed", Recording->FileName()); +// const cRecordingInfo* RecInfo = Recording->Info(); +// +// MESSAGE("%s", *RecInfo->Components()->Component(0)->ToString()); +// cUPnPClassMovie *MovieItem = NULL; +// +// MovieItem = (cUPnPClassMovie*)this->getObjectByFastFind(Recording->FileName()); +// +// inList = (MovieItem && Records->getObject(MovieItem->getID())) ? true : false; +// +// if(inList){ +// +// MESSAGE("Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); +// +// MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()); +// MovieItem->setDescription(RecInfo->ShortText()); +// MovieItem->setLongDescription(RecInfo->Description()); +// MovieItem->setStorageMedium(UPNP_STORAGE_HDD); +// // +// } +// else { +// MESSAGE("Skipping %s, already in Database", Recording->FileName()); +// } // } // } +// return 0; //} void cMediaDatabase::Action(){ diff --git a/database/metadata.h b/database/metadata.h index 32d663e..6e3732c 100644 --- a/database/metadata.h +++ b/database/metadata.h @@ -51,6 +51,8 @@ public: const char* getContainerUpdateIDs(); cMediaDatabase(); virtual ~cMediaDatabase(); + int addFastFind(cUPnPClassObject* Object, const char* FastFind); + cUPnPClassObject* getObjectByFastFind(const char* FastFind); cUPnPClassObject* getObjectByID(cUPnPObjectID ID); int browse(OUT cUPnPResultSet** Results, IN const char* ID, IN bool BrowseMetadata, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); int search(OUT cUPnPResultSet** Results, IN const char* ID, IN const char* Search, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); diff --git a/database/object.cpp b/database/object.cpp index 748078d..e533fbc 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -36,7 +36,7 @@ cUPnPResource::cUPnPResource(){ } off64_t cUPnPResource::getFileSize() const { - return (this->mSize) ? this->mSize : -1; + return (this->mSize) ? this->mSize : (off64_t)-1; } time_t cUPnPResource::getLastModification() const { @@ -105,6 +105,7 @@ void cUPnPObjects::SortBy(const char* Property, bool Descending){ cUPnPClassObject::cUPnPClassObject(){ this->mID = -1; + this->mLastID = -1; this->mResources = new cList; this->mResourcesID = new cHash; this->mParent = NULL; @@ -154,6 +155,7 @@ int cUPnPClassObject::setID(cUPnPObjectID ID){ ERROR("Invalid object ID '%s'",*ID); return -1; } + this->mLastID = (this->mID==-1) ? ID : this->mID; this->mID = ID; return 0; } @@ -520,16 +522,16 @@ bool cUPnPClassContainer::getProperty(const char* Property, char** Value) const void cUPnPClassContainer::addObject(cUPnPClassObject* Object){ MESSAGE("Adding object (ID:%s) to container (ID:%s)", *Object->getID(), *this->getID()); + Object->setParent(this); this->mChildren->Add(Object); this->mChildrenID->Add(Object, (unsigned int)Object->getID()); - Object->setParent(this); } void cUPnPClassContainer::removeObject(cUPnPClassObject* Object){ - MESSAGE("Removing object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); this->mChildrenID->Del(Object, (unsigned int)Object->getID()); this->mChildren->Del(Object, false); Object->mParent = NULL; + MESSAGE("Removed object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); } cUPnPClassObject* cUPnPClassContainer::getObject(cUPnPObjectID ID) const { @@ -1104,6 +1106,7 @@ cUPnPClassObject* cUPnPObjectMediator::getObject(cUPnPObjectID){ WARNING("Gettin cUPnPClassObject* cUPnPObjectMediator::createObject(const char*, bool){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ + MESSAGE("Updating object #%s", *Object->getID()); cString Format = "UPDATE %s SET %s WHERE %s='%s'"; //cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; cString Statement=NULL; @@ -1128,16 +1131,19 @@ int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ } char *escapedValue; escapeSQLite(Value, &escapedValue); + MESSAGE("Set %s to %s", *(*Property), escapedValue); //Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", Value?Value:"NULL"); Set = cString::sprintf("%s%s%s='%s'", *Set?*Set:"", *Set?",":"", *(*Property), escapedValue?escapedValue:"NULL"); } - Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->getID()); + Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->mLastID); //Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Columns, *Values); if(this->mDatabase->execStatement(Statement)){ ERROR("Error while executing statement"); return -1; } + // The update was successful --> the current ID is now also the LastID + Object->mLastID = Object->mID; return 0; } @@ -1146,7 +1152,6 @@ int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectI cString Statement = NULL, Column = NULL, Value = NULL; cRows* Rows; cRow* Row; Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID); -// MESSAGE("Fehler hier"); if(this->mDatabase->execStatement(Statement)){ ERROR("Error while executing statement"); return -1; diff --git a/database/object.h b/database/object.h index 9b62c54..9da62db 100644 --- a/database/object.h +++ b/database/object.h @@ -104,6 +104,7 @@ class cUPnPClassObject : public cListObject { friend class cUPnPObjectMediator; friend class cUPnPClassContainer; private: + cUPnPObjectID mLastID; bool mDeleted; // is this Objected marked as deleted protected: time_t mLastModified; @@ -271,6 +272,28 @@ public: const char* getRating() const { return this->mRating; } }; +class cUPnPClassMovie : public cUPnPClassVideoItem { + friend class cMediaDatabase; + friend class cUPnPObjectMediator; + friend class cUPnPMovieMediator; +protected: + int mDVDRegionCode; + cString mStorageMedium; + 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 ********/ + int setDVDRegionCode(int RegionCode); + int setStorageMedium(const char* StorageMedium); + /******** Getter ********/ + int getDVDRegionCode() const { return this->mDVDRegionCode; } + const char* getStorageMedium() const { return this->mStorageMedium; } +}; + class cUPnPClassVideoBroadcast : public cUPnPClassVideoItem { friend class cMediaDatabase; friend class cUPnPObjectMediator; diff --git a/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp index 77572f5..383b201 100644 --- a/upnpcomponents/upnpwebserver.cpp +++ b/upnpcomponents/upnpwebserver.cpp @@ -94,9 +94,7 @@ struct cWebFileHandle { cUPnPWebServer::cUPnPWebServer(const char* root) : mRootdir(root) { } -cUPnPWebServer::~cUPnPWebServer(){ - delete [] this->mRootdir; -} +cUPnPWebServer::~cUPnPWebServer(){} cUPnPWebServer* cUPnPWebServer::mInstance = NULL; @@ -140,7 +138,7 @@ bool cUPnPWebServer::uninit(){ MESSAGE("Disabling the internal webserver"); UpnpEnableWebserver(FALSE); - MESSAGE("Closing open file transfers"); + return true; } cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){ -- cgit v1.2.3 From bb94419e095defbe0c8c1297708b2b66f5b1ee44 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 27 Oct 2009 20:46:39 +0100 Subject: Hopefully improved compatibility with DLNA devices --- Makefile | 5 +- common.cpp | 2 +- database/database.h | 4 +- database/metadata.cpp | 104 +++++++++++++--------- database/object.cpp | 214 ++++++++++++++++++++++++++++++++++++++++++++-- database/object.h | 12 +++ database/resources.cpp | 26 ++++++ receiver/livereceiver.cpp | 10 ++- receiver/livereceiver.h | 3 + 9 files changed, 328 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index fa6d29b..27aada4 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).cpp | awk '{ p ### The C++ compiler and options: -CXX ?= g++ +CXX ?= gcc CXXFLAGS ?= -fPIC -g -Wall -O2 -Wextra -Woverloaded-virtual -Wno-parentheses -Wl,-R/usr/local/lib ### The directory environment: @@ -47,7 +47,7 @@ PACKAGE = vdr-$(ARCHIVE) ### Includes and Defines (add further entries here): -LIBS += -lupnp -lixml -lsqlite3 +LIBS += -lupnp -lixml -lsqlite3 -lavformat -lavcodec INCLUDES += -I$(VDRDIR)/include -I/usr/include \ @@ -67,6 +67,7 @@ OBJS = $(PLUGIN).o \ database/object.o \ database/resources.o \ server/server.o \ + misc/avdetector.o \ upnpcomponents/dlna.o \ upnpcomponents/upnpwebserver.o \ upnpcomponents/upnpservice.o \ diff --git a/common.cpp b/common.cpp index 7efe9ad..5407aac 100644 --- a/common.cpp +++ b/common.cpp @@ -8,7 +8,7 @@ #include #include "common.h" -DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU = { "MPEG2_TS_SD_EU", "video/mpeg" }; +DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts" }; DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = { "AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts" }; DLNAProfile DLNA_PROFILE_MPEG1_L3 = { "MP3", "audio/mpeg" }; diff --git a/database/database.h b/database/database.h index 49c208d..24e8bd1 100644 --- a/database/database.h +++ b/database/database.h @@ -12,8 +12,8 @@ #include #include "../common.h" -#define SQLITE_PRINT_STATEMENTS -#define SQLITE_PRINT_FETCHES +//#define SQLITE_PRINT_STATEMENTS +//#define SQLITE_PRINT_FETCHES #define SQLITE_CASCADE_DELETES #define PK_OBJECTS TOSTRING(1) diff --git a/database/metadata.cpp b/database/metadata.cpp index 438d002..6966602 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -52,10 +52,10 @@ bool cMediaDatabase::init(){ ERROR("Loading channels failed"); return false; } -// if(this->loadRecordings()){ -// ERROR("Loading records failed"); -// return false; -// } + if(this->loadRecordings()){ + ERROR("Loading records failed"); + return false; + } return true; } @@ -315,43 +315,65 @@ int cMediaDatabase::loadChannels(){ return 0; } -//int cMediaDatabase::loadRecordings(){ -// MESSAGE("Loading recordings"); -// cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); -// if(Records){ -// cRecording* Recording = NULL; -// for(Recording = Recordings.First(); Recording; Recording = Recordings.Next(Recording)){ -// // Iterating the records -// bool inList = false; -// -// MESSAGE("Determine if the channel %s is already listed", Recording->FileName()); -// const cRecordingInfo* RecInfo = Recording->Info(); -// -// MESSAGE("%s", *RecInfo->Components()->Component(0)->ToString()); -// cUPnPClassMovie *MovieItem = NULL; -// -// MovieItem = (cUPnPClassMovie*)this->getObjectByFastFind(Recording->FileName()); -// -// inList = (MovieItem && Records->getObject(MovieItem->getID())) ? true : false; -// -// if(inList){ -// -// MESSAGE("Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); -// -// MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()); -// MovieItem->setDescription(RecInfo->ShortText()); -// MovieItem->setLongDescription(RecInfo->Description()); -// MovieItem->setStorageMedium(UPNP_STORAGE_HDD); -// -// -// } -// else { -// MESSAGE("Skipping %s, already in Database", Recording->FileName()); -// } -// } -// } -// return 0; -//} +int cMediaDatabase::loadRecordings(){ + MESSAGE("Loading recordings"); + cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); + if(Records){ + bool noResource = false; + // TODO: Add to setup + // if an error occured while loading resources, add the channel anyway + bool addWithoutResources = false; + cRecording* Recording = NULL; + for(Recording = Recordings.First(); Recording; Recording = Recordings.Next(Recording)){ + // Iterating the records + bool inList = false; + + MESSAGE("Determine if the channel %s is already listed", Recording->FileName()); + + cUPnPClassMovie *MovieItem = NULL; + + MovieItem = (cUPnPClassMovie*)this->getObjectByFastFind(Recording->FileName()); + + inList = (MovieItem && Records->getObject(MovieItem->getID())) ? true : false; + + if(inList){ + noResource = false; + const cRecordingInfo* RecInfo = Recording->Info(); + + MESSAGE("Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); + + MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()); + MovieItem->setDescription(RecInfo->ShortText()); + MovieItem->setLongDescription(RecInfo->Description()); + MovieItem->setStorageMedium(UPNP_STORAGE_HDD); + + if(RecInfo->Components()){ + // The first component + tComponent *Component = RecInfo->Components()->Component(0); + if(Component) MovieItem->setLanguage(Component->language); + } + + if(cUPnPResources::getInstance()->createFromRecording(MovieItem, Recording)){ + ERROR("Unable to get resources for this channel"); + noResource = true; + } + if(!noResource || addWithoutResources) { + Records->addObject(MovieItem); + if(this->mFactory->saveObject(MovieItem) || + this->addFastFind(MovieItem, Recording->FileName())){ + this->mFactory->deleteObject(MovieItem); + return -1; + } + MESSAGE("Successfuly added movie"); + } + } + else { + MESSAGE("Skipping %s, already in Database", Recording->FileName()); + } + } + } + return 0; +} void cMediaDatabase::Action(){ time_t LastEPGUpdate = 0; diff --git a/database/object.cpp b/database/object.cpp index e533fbc..0587f6a 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -868,11 +868,125 @@ int cUPnPClassVideoBroadcast::setRegion(const char* Region){ return 0; } - /**********************************************\ - * * - * Mediator factory * - * * - \**********************************************/ +/**********************************************\ +* * +* Movie item * +* * +\**********************************************/ + +cUPnPClassMovie::cUPnPClassMovie(){ + this->mDVDRegionCode = 2; // Europe + this->mStorageMedium = UPNP_STORAGE_UNKNOWN; +} + +cUPnPClassMovie::~cUPnPClassMovie(){} + +//cString cUPnPClassMovie::createDIDLFragment(cStringList* Filter){ +// return NULL; +//} + +cStringList* cUPnPClassMovie::getPropertyList(){ + cStringList* Properties = cUPnPClassVideoItem::getPropertyList(); + Properties->Append(strdup(UPNP_PROP_DVDREGIONCODE)); + Properties->Append(strdup(UPNP_PROP_STORAGEMEDIUM)); + return Properties; +} + +bool cUPnPClassMovie::setProperty(const char* Property, const char* Value){ + bool ret; + if(!strcasecmp(Property, SQLITE_COL_DVDREGIONCODE) || !strcasecmp(Property, UPNP_PROP_DVDREGIONCODE)){ + ret = this->setDVDRegionCode(atoi(Value)); + } + else if(!strcasecmp(Property, SQLITE_COL_STORAGEMEDIUM) || !strcasecmp(Property, UPNP_PROP_STORAGEMEDIUM)){ + ret = this->setStorageMedium(Value); + } + else return cUPnPClassVideoItem::setProperty(Property, Value); + return ret<0?false:true; +} + +bool cUPnPClassMovie::getProperty(const char* Property, char** Value) const { + cString Val; + if(!strcasecmp(Property, SQLITE_COL_DVDREGIONCODE) || !strcasecmp(Property, UPNP_PROP_DVDREGIONCODE)){ + Val = itoa(this->getDVDRegionCode()); + } + else if(!strcasecmp(Property, SQLITE_COL_STORAGEMEDIUM) || !strcasecmp(Property, UPNP_PROP_STORAGEMEDIUM)){ + Val = this->getStorageMedium(); + } + else return cUPnPClassVideoItem::getProperty(Property, Value); + *Value = strdup0(*Val); + return true; +} + +int cUPnPClassMovie::setDVDRegionCode(int RegionCode){ +// http://en.wikipedia.org/wiki/DVD_region_code +// 0 Informal term meaning "worldwide". Region 0 is not an official setting; discs that bear the region 0 symbol either have no flag set or have region 1–6 flags set. +// 1 Canada, United States; U.S. territories; Bermuda +// 2 Western Europe; incl. United Kingdom, Ireland, and Central Europe; Eastern Europe, Western Asia; including Iran, Israel, Egypt; Japan, South Africa, Swaziland, Lesotho; French overseas territories +// 3 Southeast Asia; South Korea; Taiwan; Hong Kong; Macau +// 4 Mexico, Central and South America; Caribbean; Australia; New Zealand; Oceania; +// 5 Ukraine, Belarus, Russia, Continent of Africa, excluding Egypt, South Africa, Swaziland, and Lesotho; Central and South Asia, Mongolia, North Korea. +// 6 People's Republic of China +// 7 Reserved for future use (found in use on protected screener copies of MPAA-related DVDs and "media copies" of pre-releases in Asia) +// 8 International venues such as aircraft, cruise ships, etc.[1] +// ALL (9) Region ALL discs have all 8 flags set, allowing the disc to be played in any locale on any player. + if(0 <= RegionCode && RegionCode <= 9){ + this->mDVDRegionCode = RegionCode; + return 0; + } + else { + ERROR("Invalid DVD region code: %d", RegionCode); + return -1; + } +} + +int cUPnPClassMovie::setStorageMedium(const char* StorageMedium){ + if(!StorageMedium) this->mStorageMedium = UPNP_STORAGE_UNKNOWN; + else if( + strcasecmp(StorageMedium,UPNP_STORAGE_CD_DA) || + strcasecmp(StorageMedium,UPNP_STORAGE_CD_R) || + strcasecmp(StorageMedium,UPNP_STORAGE_CD_ROM) || + strcasecmp(StorageMedium,UPNP_STORAGE_CD_RW) || + strcasecmp(StorageMedium,UPNP_STORAGE_DAT) || + strcasecmp(StorageMedium,UPNP_STORAGE_DV) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_AUDIO) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RAM) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_ROM) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_MINUS) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_PLUS) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_R_MINUS) || + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_VIDEO) || + strcasecmp(StorageMedium,UPNP_STORAGE_D_VHS) || + strcasecmp(StorageMedium,UPNP_STORAGE_HDD) || + strcasecmp(StorageMedium,UPNP_STORAGE_HI8) || + strcasecmp(StorageMedium,UPNP_STORAGE_LD) || + strcasecmp(StorageMedium,UPNP_STORAGE_MD_AUDIO) || + strcasecmp(StorageMedium,UPNP_STORAGE_MD_PICTURE) || + strcasecmp(StorageMedium,UPNP_STORAGE_MICRO_MV) || + strcasecmp(StorageMedium,UPNP_STORAGE_MINI_DV) || + strcasecmp(StorageMedium,UPNP_STORAGE_NETWORK) || + strcasecmp(StorageMedium,UPNP_STORAGE_SACD) || + strcasecmp(StorageMedium,UPNP_STORAGE_S_VHS) || + strcasecmp(StorageMedium,UPNP_STORAGE_UNKNOWN) || + strcasecmp(StorageMedium,UPNP_STORAGE_VHS) || + strcasecmp(StorageMedium,UPNP_STORAGE_VHSC) || + strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO8) || + strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO_CD) || + strcasecmp(StorageMedium,UPNP_STORAGE_W_VHS) + ){ + ERROR("Invalid storage type: %s", StorageMedium); + return -1; + } + else { + this->mStorageMedium = StorageMedium; + } + return 0; +} + +/**********************************************\ +* * +* Mediator factory * +* * +\**********************************************/ cUPnPObjectFactory* cUPnPObjectFactory::mInstance = NULL; @@ -1704,4 +1818,94 @@ int cUPnPVideoBroadcastMediator::databaseToObject(cUPnPClassObject* Object, cUPn } } return 0; +} + +/**********************************************\ +* * +* Movie item mediator * +* * +\**********************************************/ + +cUPnPMovieMediator::cUPnPMovieMediator(cMediaDatabase* MediaDatabase) : + cUPnPVideoItemMediator(MediaDatabase){} + +cUPnPClassMovie* cUPnPMovieMediator::createObject(const char* Title, bool Restricted){ + MESSAGE("Creating movie '%s'",Title); + cUPnPClassMovie* Object = new cUPnPClassMovie; + if(this->initializeObject(Object, UPNP_CLASS_MOVIE, Title, Restricted)) return NULL; + return Object; +} + +cUPnPClassMovie* cUPnPMovieMediator::getObject(cUPnPObjectID ID){ + MESSAGE("Getting movie with ID '%s'",*ID); + cUPnPClassMovie* Object = new cUPnPClassMovie; + if(this->databaseToObject(Object, ID)) return NULL; + return Object; +} + +int cUPnPMovieMediator::objectToDatabase(cUPnPClassObject* Object){ + if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; + cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; + cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; + cString Statement=NULL, Columns=NULL, Values=NULL; + char *Value=NULL; + cString Properties[] = { + SQLITE_COL_OBJECTID, + SQLITE_COL_DVDREGIONCODE, + SQLITE_COL_STORAGEMEDIUM, + NULL + }; + for(cString* Property = Properties; *(*Property); Property++){ + Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + if(!Movie->getProperty(*Property, &Value)){ + ERROR("No such property '%s' in object with ID '%s'",*(*Property),* Movie->getID()); + return -1; + } + char *escapedValue; + escapeSQLite(Value, &escapedValue); + Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + + } + Statement = cString::sprintf(Format, SQLITE_TABLE_MOVIES, *Columns, *Values); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + return 0; +} + +int cUPnPMovieMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ + if(cUPnPVideoItemMediator::databaseToObject(Object,ID)){ + ERROR("Error while loading object"); + return -1; + } + cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; + cString Format = "SELECT * FROM %s WHERE %s=%s"; + cString Statement = NULL, Column = NULL, Value = NULL; + cRows* Rows; cRow* Row; + Statement = cString::sprintf(Format, SQLITE_TABLE_MOVIES, SQLITE_COL_OBJECTID, *ID); + if(this->mDatabase->execStatement(Statement)){ + ERROR("Error while executing statement"); + return -1; + } + Rows = this->mDatabase->getResultRows(); + if(!Rows->fetchRow(&Row)){ + MESSAGE("No item properties found"); + return 0; + } + while(Row->fetchColumn(&Column, &Value)){ + if(!strcasecmp(Column, SQLITE_COL_DVDREGIONCODE)){ + if(Movie->setDVDRegionCode(atoi(Value))){ + ERROR("Error while setting icon"); + return -1; + } + } + else if(!strcasecmp(Column, SQLITE_COL_STORAGEMEDIUM)){ + if(Movie->setStorageMedium(Value)){ + ERROR("Error while setting region"); + return -1; + } + } + } + return 0; } \ No newline at end of file diff --git a/database/object.h b/database/object.h index 9da62db..a38098d 100644 --- a/database/object.h +++ b/database/object.h @@ -51,6 +51,7 @@ struct cClass { class cUPnPResource : public cListObject { friend class cUPnPResourceMediator; friend class cUPnPResources; + friend class cAudioVideoDetector; private: unsigned int mResourceID; cUPnPObjectID mObjectID; @@ -405,6 +406,17 @@ public: virtual cUPnPClassVideoBroadcast* getObject(cUPnPObjectID ID); }; +class cUPnPMovieMediator : public cUPnPVideoItemMediator { +protected: + virtual int objectToDatabase(cUPnPClassObject* Object); + virtual int databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID); +public: + cUPnPMovieMediator(cMediaDatabase* MediaDatabase); + virtual ~cUPnPMovieMediator(){}; + virtual cUPnPClassMovie* createObject(const char* Title, bool Restricted); + virtual cUPnPClassMovie* getObject(cUPnPObjectID ID); +}; + class cUPnPContainerMediator : public cUPnPObjectMediator { protected: virtual int objectToDatabase(cUPnPClassObject* Object); diff --git a/database/resources.cpp b/database/resources.cpp index df2b354..bc4c185 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -10,6 +10,7 @@ #include "../upnpcomponents/dlna.h" #include #include "resources.h" +#include "../misc/avdetector.h" cUPnPResources* cUPnPResources::mInstance = NULL; @@ -94,6 +95,31 @@ cUPnPResource* cUPnPResources::getResource(unsigned int ResourceID){ } } +int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* Recording){ + cString VideoFile = cString::sprintf(VDR_RECORDFILE_PATTERN_TS, Recording->FileName(), 1); + + cAudioVideoDetector* Detector = new cAudioVideoDetector(); + + cString ContentType = "video/mpeg"; + cString ProtocolInfo = "http-get:*:video/mpeg:*"; + + cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_RECORDING, Recording->FileName(), ContentType, ProtocolInfo); + + if(Detector->detectVideoProperties(Resource, VideoFile)){ + ERROR("Error while detecting video properties"); + return -1; + } + + delete Detector; + MESSAGE("To be done"); + return -1; +} + +int cUPnPResources::createFromFile(cUPnPClassItem* , cString ){ + MESSAGE("To be done"); + return -1; +} + int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel* Channel){ if(!Object || !Channel){ ERROR("Invalid input arguments"); diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 593853f..9ba69eb 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -129,13 +129,21 @@ int cLiveReceiver::read(char* buf, size_t buflen){ if(!this->IsAttached()) bytesRead = -1; else { + int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; // 10 Seconds timeout with no data while(!this->mOutputBuffer->Available()){ WARNING("No data, waiting..."); - cCondWait::SleepMs(50); + cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ MESSAGE("Lost device..."); return 0; } + WaitTimeout-=RECEIVER_WAIT_ON_NODATA; + if(WaitTimeout<=0){ + double seconds = (RECEIVER_WAIT_ON_NODATA_TIMEOUT/1000); + ERROR("No data received for %4.2f seconds, aborting.", seconds); + this->Activate(false); + return 0; + } } uchar* buffer = this->mOutputBuffer->Get(bytesRead); diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h index 4632733..9da8923 100644 --- a/receiver/livereceiver.h +++ b/receiver/livereceiver.h @@ -13,6 +13,9 @@ #include #include +#define RECEIVER_WAIT_ON_NODATA 50 // 50 ms +#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 10 // 10s + class cLiveReceiver : public cReceiver, public cThread, public cFileHandle { public: static cLiveReceiver* newInstance(cChannel *Channel, int Priority); -- cgit v1.2.3 From 31bacb9c5d7e66ddc2403520ee60f76205f64937 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 27 Oct 2009 21:24:59 +0100 Subject: I forgot two files :) --- database/metadata.cpp | 3 ++- database/object.cpp | 58 ++++++++++++++++++++++---------------------- misc/avdetector.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ misc/avdetector.h | 22 +++++++++++++++++ misc/avdetector.o | Bin 0 -> 41580 bytes 5 files changed, 119 insertions(+), 30 deletions(-) create mode 100644 misc/avdetector.cpp create mode 100644 misc/avdetector.h create mode 100644 misc/avdetector.o diff --git a/database/metadata.cpp b/database/metadata.cpp index 6966602..bf99e82 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -36,6 +36,7 @@ cMediaDatabase::cMediaDatabase(){ this->mFactory->registerMediator(UPNP_CLASS_CONTAINER, new cUPnPContainerMediator(this)); this->mFactory->registerMediator(UPNP_CLASS_VIDEO, new cUPnPVideoItemMediator(this)); this->mFactory->registerMediator(UPNP_CLASS_VIDEOBC, new cUPnPVideoBroadcastMediator(this)); + this->mFactory->registerMediator(UPNP_CLASS_MOVIE, new cUPnPMovieMediator(this)); } cMediaDatabase::~cMediaDatabase(){ @@ -336,7 +337,7 @@ int cMediaDatabase::loadRecordings(){ inList = (MovieItem && Records->getObject(MovieItem->getID())) ? true : false; - if(inList){ + if(!inList){ noResource = false; const cRecordingInfo* RecInfo = Recording->Info(); diff --git a/database/object.cpp b/database/object.cpp index 0587f6a..6683dd2 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -942,35 +942,35 @@ int cUPnPClassMovie::setDVDRegionCode(int RegionCode){ int cUPnPClassMovie::setStorageMedium(const char* StorageMedium){ if(!StorageMedium) this->mStorageMedium = UPNP_STORAGE_UNKNOWN; else if( - strcasecmp(StorageMedium,UPNP_STORAGE_CD_DA) || - strcasecmp(StorageMedium,UPNP_STORAGE_CD_R) || - strcasecmp(StorageMedium,UPNP_STORAGE_CD_ROM) || - strcasecmp(StorageMedium,UPNP_STORAGE_CD_RW) || - strcasecmp(StorageMedium,UPNP_STORAGE_DAT) || - strcasecmp(StorageMedium,UPNP_STORAGE_DV) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_AUDIO) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RAM) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_ROM) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_MINUS) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_PLUS) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_R_MINUS) || - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_VIDEO) || - strcasecmp(StorageMedium,UPNP_STORAGE_D_VHS) || - strcasecmp(StorageMedium,UPNP_STORAGE_HDD) || - strcasecmp(StorageMedium,UPNP_STORAGE_HI8) || - strcasecmp(StorageMedium,UPNP_STORAGE_LD) || - strcasecmp(StorageMedium,UPNP_STORAGE_MD_AUDIO) || - strcasecmp(StorageMedium,UPNP_STORAGE_MD_PICTURE) || - strcasecmp(StorageMedium,UPNP_STORAGE_MICRO_MV) || - strcasecmp(StorageMedium,UPNP_STORAGE_MINI_DV) || - strcasecmp(StorageMedium,UPNP_STORAGE_NETWORK) || - strcasecmp(StorageMedium,UPNP_STORAGE_SACD) || - strcasecmp(StorageMedium,UPNP_STORAGE_S_VHS) || - strcasecmp(StorageMedium,UPNP_STORAGE_UNKNOWN) || - strcasecmp(StorageMedium,UPNP_STORAGE_VHS) || - strcasecmp(StorageMedium,UPNP_STORAGE_VHSC) || - strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO8) || - strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO_CD) || + strcasecmp(StorageMedium,UPNP_STORAGE_CD_DA) && + strcasecmp(StorageMedium,UPNP_STORAGE_CD_R) && + strcasecmp(StorageMedium,UPNP_STORAGE_CD_ROM) && + strcasecmp(StorageMedium,UPNP_STORAGE_CD_RW) && + strcasecmp(StorageMedium,UPNP_STORAGE_DAT) && + strcasecmp(StorageMedium,UPNP_STORAGE_DV) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_AUDIO) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RAM) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_ROM) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_MINUS) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_PLUS) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_R_MINUS) && + strcasecmp(StorageMedium,UPNP_STORAGE_DVD_VIDEO) && + strcasecmp(StorageMedium,UPNP_STORAGE_D_VHS) && + strcasecmp(StorageMedium,UPNP_STORAGE_HDD) && + strcasecmp(StorageMedium,UPNP_STORAGE_HI8) && + strcasecmp(StorageMedium,UPNP_STORAGE_LD) && + strcasecmp(StorageMedium,UPNP_STORAGE_MD_AUDIO) && + strcasecmp(StorageMedium,UPNP_STORAGE_MD_PICTURE) && + strcasecmp(StorageMedium,UPNP_STORAGE_MICRO_MV) && + strcasecmp(StorageMedium,UPNP_STORAGE_MINI_DV) && + strcasecmp(StorageMedium,UPNP_STORAGE_NETWORK) && + strcasecmp(StorageMedium,UPNP_STORAGE_SACD) && + strcasecmp(StorageMedium,UPNP_STORAGE_S_VHS) && + strcasecmp(StorageMedium,UPNP_STORAGE_UNKNOWN) && + strcasecmp(StorageMedium,UPNP_STORAGE_VHS) && + strcasecmp(StorageMedium,UPNP_STORAGE_VHSC) && + strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO8) && + strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO_CD) && strcasecmp(StorageMedium,UPNP_STORAGE_W_VHS) ){ ERROR("Invalid storage type: %s", StorageMedium); diff --git a/misc/avdetector.cpp b/misc/avdetector.cpp new file mode 100644 index 0000000..d66988e --- /dev/null +++ b/misc/avdetector.cpp @@ -0,0 +1,66 @@ +/* + * File: avdetector.cpp + * Author: savop + * + * Created on 26. Oktober 2009, 13:01 + */ + +#include "avdetector.h" +extern "C" { +#include +#include +} + +using namespace std; + +int cAudioVideoDetector::detectVideoProperties(cUPnPResource* Resource, const char* Filename){ +// // Register avformat + av_register_all(); + + AVFormatContext *FormatCtx = NULL; + if(av_open_input_file(&FormatCtx, Filename, NULL, 0, NULL)){ + ERROR("AVDetector: Error while opening file %s", Filename); + return -1; + } + + if(av_find_stream_info(FormatCtx)<0){ + ERROR("AVDetector: Cannot find the stream information"); + return -1; + } + +#ifdef DEBUG + dump_format(FormatCtx, 0, Filename, 0); +#endif + + unsigned int i; int videoStream = -1; + + AVCodecContext *CodecCtx = NULL; + for(i = 0; i < FormatCtx->nb_streams; i++){ + if(FormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO){ + videoStream = i; + break; + } + } + if(videoStream == -1){ + ERROR("AVDetector: No video stream found"); + return -1; + } + + CodecCtx = FormatCtx->streams[videoStream]->codec; + + AVCodec* Codec = avcodec_find_decoder(CodecCtx->codec_id); + + unsigned int width = CodecCtx->width; + unsigned int height = CodecCtx->height; + unsigned int bitrate = CodecCtx->bit_rate; + const char* codecName = (Codec)?Codec->name:"unknown"; + + MESSAGE("AVDetector: %s-stream %dx%d at %d bit/s", codecName, width, height, bitrate); + + Resource->mBitrate = bitrate; + Resource->mSampleFrequency = CodecCtx->sample_rate; + Resource->mResolution = cString::sprintf("%dx%d", width, height); + + return 0; + +} diff --git a/misc/avdetector.h b/misc/avdetector.h new file mode 100644 index 0000000..0b8bb81 --- /dev/null +++ b/misc/avdetector.h @@ -0,0 +1,22 @@ +/* + * File: avdetector.h + * Author: savop + * + * Created on 26. Oktober 2009, 13:02 + */ + +#ifndef _AVDETECTOR_H +#define _AVDETECTOR_H + +#include "../database/object.h" + +class cAudioVideoDetector { +public: + cAudioVideoDetector(){}; + virtual ~cAudioVideoDetector(){}; + int detectVideoProperties(cUPnPResource* Resource, const char* Filename); +private: +}; + +#endif /* _AVDETECTOR_H */ + diff --git a/misc/avdetector.o b/misc/avdetector.o new file mode 100644 index 0000000..130619d Binary files /dev/null and b/misc/avdetector.o differ -- cgit v1.2.3 From 1e5f313b06a7ccde7d320a933316201136fe87a3 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 27 Oct 2009 21:25:19 +0100 Subject: I forgot two files :) --- misc/avdetector.o | Bin 41580 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 misc/avdetector.o diff --git a/misc/avdetector.o b/misc/avdetector.o deleted file mode 100644 index 130619d..0000000 Binary files a/misc/avdetector.o and /dev/null differ -- cgit v1.2.3 From 08a0fde39e774d2dd8e688928d92a438f3fac8ce Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 27 Oct 2009 22:19:14 +0100 Subject: Removed a bug when loading data from database --- database/database.cpp | 7 ++++++- database/database.h | 4 ++-- database/metadata.cpp | 8 ++++++++ database/object.cpp | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/database/database.cpp b/database/database.cpp index 9c08c00..fa2e9b8 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -134,7 +134,12 @@ bool cRow::fetchColumn(char** Column, char** Value){ MESSAGE("Fetching column %s='%s' (%d/%d)", this->Columns[currentCol], this->Values[currentCol], currentCol+1, this->ColCount); #endif *Column = strdup0(this->Columns[currentCol]); - *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup0(this->Values[currentCol]):NULL; + if(this->Values[currentCol]){ + *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup0(this->Values[currentCol]):NULL; + } + else { + *Value = NULL; + } currentCol++; return true; } diff --git a/database/database.h b/database/database.h index 24e8bd1..49c208d 100644 --- a/database/database.h +++ b/database/database.h @@ -12,8 +12,8 @@ #include #include "../common.h" -//#define SQLITE_PRINT_STATEMENTS -//#define SQLITE_PRINT_FETCHES +#define SQLITE_PRINT_STATEMENTS +#define SQLITE_PRINT_FETCHES #define SQLITE_CASCADE_DELETES #define PK_OBJECTS TOSTRING(1) diff --git a/database/metadata.cpp b/database/metadata.cpp index bf99e82..8ea43dc 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -306,6 +306,10 @@ int cMediaDatabase::loadChannels(){ } MESSAGE("Successfuly added channel"); } + else { + // Delete temporarily created object with no resource + this->mFactory->deleteObject(ChannelItem); + } } } else { @@ -367,6 +371,10 @@ int cMediaDatabase::loadRecordings(){ } MESSAGE("Successfuly added movie"); } + else { + // Delete temporarily created object with no resource + this->mFactory->deleteObject(MovieItem); + } } else { MESSAGE("Skipping %s, already in Database", Recording->FileName()); diff --git a/database/object.cpp b/database/object.cpp index 6683dd2..1ef4fe2 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -1544,7 +1544,7 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje Class.ID = strdup0(*Value); } else if(!strcasecmp(Column, SQLITE_COL_CLASSDERIVED)){ - Class.includeDerived = atoi(Value)==1?"true":"false"; + Class.includeDerived = atoi(Value)==1?true:false; } } SearchClasses.push_back(Class); -- cgit v1.2.3 From 8f5c2e9e959d137eda7551691661861ca957459f Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 28 Oct 2009 11:57:37 +0100 Subject: Removed bug with ' in recordings --- common.cpp | 2 +- common.h | 2 +- database/resources.cpp | 22 +++++++++++++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/common.cpp b/common.cpp index 5407aac..946c48f 100644 --- a/common.cpp +++ b/common.cpp @@ -8,7 +8,7 @@ #include #include "common.h" -DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts" }; +DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts" }; DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = { "AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts" }; DLNAProfile DLNA_PROFILE_MPEG1_L3 = { "MP3", "audio/mpeg" }; diff --git a/common.h b/common.h index 6762b47..6dc7975 100644 --- a/common.h +++ b/common.h @@ -718,7 +718,7 @@ struct DLNAIconProfile { /* Audio */ extern DLNAProfile DLNA_PROFILE_MPEG1_L3; // MP3 /* Video */ -extern DLNAProfile DLNA_PROFILE_MPEG2_TS_SD_EU; // This is the profile for DVB-TV +extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU; // This is the profile for DVB-TV extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; // This is the profile for DVB-TV /* Icons */ diff --git a/database/resources.cpp b/database/resources.cpp index bc4c185..04172ad 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -100,6 +100,8 @@ int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* cAudioVideoDetector* Detector = new cAudioVideoDetector(); + // TODO: add DLNA-Support to detector + cString ContentType = "video/mpeg"; cString ProtocolInfo = "http-get:*:video/mpeg:*"; @@ -111,8 +113,8 @@ int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* } delete Detector; - MESSAGE("To be done"); - return -1; + MESSAGE("To be continued, may it work with DLNA?! Guess, not!"); + return 0; } int cUPnPResources::createFromFile(cUPnPClassItem* , cString ){ @@ -245,6 +247,10 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ } int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ + + char* escapedResource = NULL; + escapeSQLite(Resource->mResource, escapedResource); + cString Format = "UPDATE %s SET %s WHERE %s=%d"; cString Sets = cString::sprintf("%s='%s'," "%s='%s'," @@ -261,7 +267,7 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ "%s=%d", SQLITE_COL_OBJECTID, *Resource->mObjectID?*Resource->mObjectID:"NULL", SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo?*Resource->mProtocolInfo:"NULL", - SQLITE_COL_RESOURCE, *Resource->mResource?*Resource->mResource:"NULL", + SQLITE_COL_RESOURCE, escapedResource?escapedResource:"NULL", SQLITE_COL_SIZE, Resource->mSize, SQLITE_COL_DURATION, *Resource->mDuration?*Resource->mDuration:"NULL", SQLITE_COL_BITRATE, Resource->mBitrate, @@ -274,6 +280,7 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ SQLITE_COL_RESOURCETYPE, Resource->mResourceType ); + free(escapedResource); cString Statement = cString::sprintf(Format, SQLITE_TABLE_RESOURCES, *Sets, SQLITE_COL_RESOURCEID, Resource->mResourceID); if(this->mDatabase->execStatement(Statement)){ @@ -286,6 +293,9 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo){ cUPnPResource* Resource = new cUPnPResource; + + char* escapedResource = NULL; + cString Statement = cString::sprintf("INSERT INTO %s (%s,%s,%s,%s,%s) VALUES ('%s','%s','%s','%s','%d')", SQLITE_TABLE_RESOURCES, SQLITE_COL_OBJECTID, @@ -294,11 +304,13 @@ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int SQLITE_COL_CONTENTTYPE, SQLITE_COL_RESOURCETYPE, *Object->getID(), - *ResourceFile, + escapeSQLite(ResourceFile, escapedResource), *ProtocolInfo, *ContentType, ResourceType ); + free(escapedResource); + if(this->mDatabase->execStatement(Statement)){ ERROR("Error while executing statement"); return NULL; @@ -309,6 +321,6 @@ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int Resource->mProtocolInfo = ProtocolInfo; Resource->mContentType = ContentType; Resource->mResourceType = ResourceType; - + return Resource; } \ No newline at end of file -- cgit v1.2.3 From b3e11cd2c33627da84867efa0069ddcd3c9c391e Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 28 Oct 2009 12:33:55 +0100 Subject: Removed missing & signs since last revision --- database/resources.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/resources.cpp b/database/resources.cpp index 04172ad..bfd9955 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -249,7 +249,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ char* escapedResource = NULL; - escapeSQLite(Resource->mResource, escapedResource); + escapeSQLite(Resource->mResource, &escapedResource); cString Format = "UPDATE %s SET %s WHERE %s=%d"; cString Sets = cString::sprintf("%s='%s'," @@ -304,7 +304,7 @@ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int SQLITE_COL_CONTENTTYPE, SQLITE_COL_RESOURCETYPE, *Object->getID(), - escapeSQLite(ResourceFile, escapedResource), + escapeSQLite(ResourceFile, &escapedResource), *ProtocolInfo, *ContentType, ResourceType -- cgit v1.2.3 From eb0522f864623adc5ade2475961d7f2f429da8d7 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 28 Oct 2009 12:35:54 +0100 Subject: Removed missing & signs since last revision --- upnpcomponents/dlna.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp index 1d57d0e..0b15cbe 100644 --- a/upnpcomponents/dlna.cpp +++ b/upnpcomponents/dlna.cpp @@ -45,7 +45,7 @@ void cDlna::registerProfile(DLNAProfile* Profile, int Op, const char* Ps, int Ci } void cDlna::registerMainProfiles(){ - this->registerProfile(&DLNA_PROFILE_MPEG2_TS_SD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); + this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); } @@ -73,7 +73,7 @@ DLNAProfile* cDlna::getProfileOfChannel(cChannel* Channel){ switch(Channel->Vtype()){ case 0x02: // MPEG2 Video - return &DLNA_PROFILE_MPEG2_TS_SD_EU; + return &DLNA_PROFILE_MPEG_TS_SD_EU; case 0x1B: return &DLNA_PROFILE_AVC_TS_HD_EU; default: -- cgit v1.2.3 From a0ea012e9f0a6535695ab1c6efb6cb700d4b57ef Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 28 Oct 2009 16:55:43 +0100 Subject: Another bug with database loading and inserting --- database/database.h | 10 +++++----- database/metadata.cpp | 6 +++++- database/resources.cpp | 16 ++++++++-------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/database/database.h b/database/database.h index 49c208d..cc3ad12 100644 --- a/database/database.h +++ b/database/database.h @@ -734,11 +734,11 @@ "violates foreign key constraint \"" SQLITE_COL_OBJECTID "\"') " \ "END; END;" - /**********************************************\ - * * - * Resources * - * * - \**********************************************/ +/**********************************************\ +* * +* Resources * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_RESOURCES "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_RESOURCES \ diff --git a/database/metadata.cpp b/database/metadata.cpp index 8ea43dc..4f18009 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -129,13 +129,17 @@ int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ MESSAGE("Invalid fast find parameters"); return -1; } + + char* escapedFastFind; + escapeSQLite(FastFind, &escapedFastFind); cString Statement = cString::sprintf("INSERT OR REPLACE INTO %s (%s, %s) VALUES ('%s', '%s')", SQLITE_TABLE_ITEMFINDER, SQLITE_COL_OBJECTID, SQLITE_COL_ITEMFINDER, *Object->getID(), - FastFind + escapedFastFind ); + free(escapedFastFind); if(this->mDatabase->execStatement(Statement)){ ERROR("Error while executing statement"); return -1; diff --git a/database/resources.cpp b/database/resources.cpp index bfd9955..e1bfca2 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -204,7 +204,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ cString Column = NULL, Value = NULL; while(Row->fetchColumn(&Column, &Value)){ if(!strcasecmp(SQLITE_COL_OBJECTID, Column)){ - Resource->mObjectID = atoi(Value); + Resource->mObjectID = *Value?atoi(Value):-1; } else if(!strcasecmp(SQLITE_COL_PROTOCOLINFO, Column)){ Resource->mProtocolInfo = Value; @@ -213,25 +213,25 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ Resource->mResource = Value; } else if(!strcasecmp(SQLITE_COL_SIZE, Column)){ - Resource->mSize = atol(Value); + Resource->mSize = *Value?atol(Value):0; } else if(!strcasecmp(SQLITE_COL_DURATION, Column)){ Resource->mDuration = Value; } else if(!strcasecmp(SQLITE_COL_BITRATE, Column)){ - Resource->mBitrate = atoi(Value); + Resource->mBitrate = *Value?atoi(Value):0; } else if(!strcasecmp(SQLITE_COL_SAMPLEFREQUENCE, Column)){ - Resource->mSampleFrequency = atoi(Value); + Resource->mSampleFrequency = *Value?atoi(Value):0; } else if(!strcasecmp(SQLITE_COL_BITSPERSAMPLE, Column)){ - Resource->mBitsPerSample = atoi(Value); + Resource->mBitsPerSample = *Value?atoi(Value):0; } else if(!strcasecmp(SQLITE_COL_NOAUDIOCHANNELS, Column)){ - Resource->mNrAudioChannels = atoi(Value); + Resource->mNrAudioChannels = *Value?atoi(Value):0; } else if(!strcasecmp(SQLITE_COL_COLORDEPTH, Column)){ - Resource->mColorDepth = atoi(Value); + Resource->mColorDepth = *Value?atoi(Value):0; } else if(!strcasecmp(SQLITE_COL_RESOLUTION, Column)){ Resource->mResolution = Value; @@ -240,7 +240,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ Resource->mContentType = Value; } else if(!strcasecmp(SQLITE_COL_RESOURCETYPE, Column)){ - Resource->mResourceType = atoi(Value); + Resource->mResourceType = *Value?atoi(Value):0; } } return Resource; -- cgit v1.2.3 From 5057fe1ea036ba681ee232a19392751633322760 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Thu, 29 Oct 2009 16:40:29 +0100 Subject: Closed bug with ' and database\nimproved LiveTV receiver --- database/database.cpp | 23 ++++++- database/database.h | 5 +- database/metadata.cpp | 43 ++++++------- database/object.cpp | 150 +++++++++++++++++----------------------------- database/resources.cpp | 97 ++++++++++++------------------ receiver/livereceiver.cpp | 7 ++- receiver/livereceiver.h | 3 +- 7 files changed, 143 insertions(+), 185 deletions(-) diff --git a/database/database.cpp b/database/database.cpp index fa2e9b8..4355cbd 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -39,7 +39,7 @@ cSQLiteDatabase* cSQLiteDatabase::getInstance(){ return NULL; } -int cSQLiteDatabase::execStatement(const char* Statement){ +int cSQLiteDatabase::exec(const char* Statement){ char* Error; if(!this->mDatabase){ ERROR("Database not open. Cannot continue"); @@ -52,6 +52,7 @@ int cSQLiteDatabase::execStatement(const char* Statement){ if(sqlite3_exec(this->mDatabase, Statement, cSQLiteDatabase::getResultRow, (cSQLiteDatabase*)this, &Error)!=SQLITE_OK){ ERROR("Database error: %s", Error); ERROR("Statement was: %s", Statement); + delete this->mRows; this->mRows = NULL; sqlite3_free(Error); return -1; } @@ -60,6 +61,24 @@ int cSQLiteDatabase::execStatement(const char* Statement){ return 0; } +const char* cSQLiteDatabase::sprintf(const char* Format, ...){ + va_list vlist; + va_start(vlist, Format); + char* SQLStatement = sqlite3_vmprintf(Format, vlist); + va_end(vlist); + return SQLStatement; +} + +int cSQLiteDatabase::execStatement(const char* Statement, ...){ + va_list vlist; + va_start(vlist, Statement); + char* SQLStatement = sqlite3_vmprintf(Statement, vlist); + va_end(vlist); + int ret = this->exec(SQLStatement); + sqlite3_free(SQLStatement); + return ret; +} + int cSQLiteDatabase::getResultRow(void* DB, int NumCols, char** Values, char** ColNames){ cRow* Row = new cRow; Row->ColCount = NumCols; @@ -135,7 +154,7 @@ bool cRow::fetchColumn(char** Column, char** Value){ #endif *Column = strdup0(this->Columns[currentCol]); if(this->Values[currentCol]){ - *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup0(this->Values[currentCol]):NULL; + *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup(this->Values[currentCol]):NULL; } else { *Value = NULL; diff --git a/database/database.h b/database/database.h index cc3ad12..ecd43e4 100644 --- a/database/database.h +++ b/database/database.h @@ -824,6 +824,7 @@ public: }; class cSQLiteDatabase { + friend class cStatement; private: bool mAutoCommit; bool mActiveTransaction; @@ -836,13 +837,15 @@ private: int initializeTables(); int initializeTriggers(); static int getResultRow(void* DB, int NumCols, char** Values, char** ColNames); + int exec(const char* Statement); public: + static const char* sprintf(const char* Format, ...); virtual ~cSQLiteDatabase(); static cSQLiteDatabase* getInstance(); int getResultCount() const { return this->mRows->Count(); } long getLastInsertRowID() const; cRows* getResultRows() const { return this->mRows; } - int execStatement(const char* Statement); + int execStatement(const char* Statement, ...); void startTransaction(); void commitTransaction(); void rollbackTransaction(); diff --git a/database/metadata.cpp b/database/metadata.cpp index 4f18009..ebe530b 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -61,12 +61,10 @@ bool cMediaDatabase::init(){ } void cMediaDatabase::updateSystemID(){ - cString Statement = cString::sprintf("INSERT OR REPLACE INTO %s (Key,Value) VALUES ('%s','%d')", - SQLITE_TABLE_SYSTEM, - KEY_SYSTEM_UPDATE_ID, - this->getSystemUpdateID()+1 - ); - this->mDatabase->execStatement(Statement); + this->mDatabase->execStatement("INSERT OR REPLACE INTO %s (Key,Value) VALUES (%Q,%d)", + SQLITE_TABLE_SYSTEM, + KEY_SYSTEM_UPDATE_ID, + this->getSystemUpdateID()+1); } const char* cMediaDatabase::getContainerUpdateIDs(){ @@ -74,11 +72,9 @@ const char* cMediaDatabase::getContainerUpdateIDs(){ } unsigned int cMediaDatabase::getSystemUpdateID(){ - cString Statement = cString::sprintf("SELECT Value FROM %s WHERE Key='%s'", - SQLITE_TABLE_SYSTEM, - KEY_SYSTEM_UPDATE_ID - ); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement("SELECT Value FROM %s WHERE Key=%Q", + SQLITE_TABLE_SYSTEM, + KEY_SYSTEM_UPDATE_ID)){ ERROR("Error while executing statement"); return 0; } @@ -99,9 +95,9 @@ unsigned int cMediaDatabase::getSystemUpdateID(){ cUPnPObjectID cMediaDatabase::getNextObjectID(){ cString Statement, Column, Value; - const char* Format = "SELECT Key FROM %s WHERE KeyID=%s"; - Statement = cString::sprintf(Format, SQLITE_TABLE_PRIMARY_KEYS, PK_OBJECTS); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement("SELECT Key FROM %s WHERE KeyID=%Q", + SQLITE_TABLE_PRIMARY_KEYS, + PK_OBJECTS)){ ERROR("Error while executing statement"); return 0; } @@ -130,17 +126,12 @@ int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ return -1; } - char* escapedFastFind; - escapeSQLite(FastFind, &escapedFastFind); - cString Statement = cString::sprintf("INSERT OR REPLACE INTO %s (%s, %s) VALUES ('%s', '%s')", + if(this->mDatabase->execStatement("INSERT OR REPLACE INTO %s (%s, %s) VALUES (%Q, %Q)", SQLITE_TABLE_ITEMFINDER, SQLITE_COL_OBJECTID, SQLITE_COL_ITEMFINDER, *Object->getID(), - escapedFastFind - ); - free(escapedFastFind); - if(this->mDatabase->execStatement(Statement)){ + FastFind)){ ERROR("Error while executing statement"); return -1; } @@ -150,10 +141,12 @@ int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ cUPnPClassObject* cMediaDatabase::getObjectByFastFind(const char* FastFind){ if(!FastFind) return NULL; MESSAGE("Try to find Object with identifier %s", FastFind); - cString Statement, Column, Value; - const char* Format = "SELECT %s FROM %s WHERE %s='%s'"; - Statement = cString::sprintf(Format, SQLITE_COL_OBJECTID, SQLITE_TABLE_ITEMFINDER, SQLITE_COL_ITEMFINDER, FastFind); - if(this->mDatabase->execStatement(Statement)){ + cString Column, Value; + if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%Q", + SQLITE_COL_OBJECTID, + SQLITE_TABLE_ITEMFINDER, + SQLITE_COL_ITEMFINDER, + FastFind)){ ERROR("Error while executing statement"); return 0; } diff --git a/database/object.cpp b/database/object.cpp index 1ef4fe2..94d9415 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -265,7 +265,7 @@ bool cUPnPClassObject::getProperty(const char* Property, char** Value) const { Val = this->isRestricted()?"1":"0"; } else if(!strcasecmp(Property, SQLITE_COL_WRITESTATUS) || !strcasecmp(Property, UPNP_PROP_WRITESTATUS)){ - Val = cString::sprintf("%d",this->getWriteStatus()); + Val = itoa(this->getWriteStatus()); } else { ERROR("Invalid property '%s'", Property); @@ -1035,11 +1035,10 @@ void cUPnPObjectFactory::unregisterMediator(const char* UPnPClass, bool freeMedi } cMediatorInterface* cUPnPObjectFactory::findMediatorByID(cUPnPObjectID ID){ - cString Format = "SELECT %s FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL, Class = NULL; + cString Format = "SELECT %s FROM %s WHERE %s=%Q"; + cString Column = NULL, Value = NULL, Class = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_COL_CLASS, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_COL_CLASS, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return NULL; } @@ -1142,10 +1141,8 @@ int cUPnPObjectMediator::saveObject(cUPnPClassObject* Object){ } int cUPnPObjectMediator::deleteObject(cUPnPClassObject* Object){ - cString Statement = NULL; - cString Format = "DELETE FROM %s WHERE %s=%s"; - Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *Object->getID()); - if(this->mDatabase->execStatement(Statement)){ + cString Format = "DELETE FROM %s WHERE %s=%Q"; + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *Object->getID())){ ERROR("Error while executing statement"); return -1; } @@ -1192,9 +1189,7 @@ int cUPnPObjectMediator::initializeObject(cUPnPClassObject* Object, const char* ERROR("Error while setting restriction"); return -1; } - char* escapedTitle; - escapeSQLite(Object->getTitle(), &escapedTitle); - cString Statement = cString::sprintf("INSERT INTO %s (%s, %s, %s, %s, %s) VALUES (%s, %s, '%s', '%s', %d)", + if(this->mDatabase->execStatement("INSERT INTO %s (%s, %s, %s, %s, %s) VALUES (%s, %s, %Q, %Q, %d)", SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, SQLITE_COL_PARENTID, @@ -1204,14 +1199,11 @@ int cUPnPObjectMediator::initializeObject(cUPnPClassObject* Object, const char* *Object->getID(), *Object->getParentID(), Object->getClass(), - escapedTitle, - Object->isRestricted()?1:0 - ); - if(this->mDatabase->execStatement(Statement)){ + Object->getTitle(), + Object->isRestricted()?1:0)){ ERROR("Error while executing statement"); return -1; } - free(escapedTitle); return 0; } @@ -1223,7 +1215,6 @@ int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ MESSAGE("Updating object #%s", *Object->getID()); cString Format = "UPDATE %s SET %s WHERE %s='%s'"; //cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL; cString Set=NULL; //cString Columns=NULL, Values=NULL; char *Value=NULL; @@ -1238,21 +1229,13 @@ int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property)!=NULL; Property++){ - //Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!Object->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - MESSAGE("Set %s to %s", *(*Property), escapedValue); - //Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", Value?Value:"NULL"); - Set = cString::sprintf("%s%s%s='%s'", *Set?*Set:"", *Set?",":"", *(*Property), escapedValue?escapedValue:"NULL"); - + Set = cSQLiteDatabase::sprintf("%s%s%s=%Q", *Set?*Set:"", *Set?",":"", *(*Property), Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->mLastID); - //Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->mLastID)){ ERROR("Error while executing statement"); return -1; } @@ -1262,11 +1245,12 @@ int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ } int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%Q", + SQLITE_TABLE_OBJECTS, + SQLITE_COL_OBJECTID, + *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1345,7 +1329,7 @@ cUPnPItemMediator::cUPnPItemMediator(cMediaDatabase* MediaDatabase) : int cUPnPItemMediator::objectToDatabase(cUPnPClassObject* Object){ if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL, Columns=NULL, Values=NULL; + cString Columns=NULL, Values=NULL; char *Value=NULL; cString Properties[] = { SQLITE_COL_OBJECTID, @@ -1353,18 +1337,15 @@ int cUPnPItemMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property); Property++){ - Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!Object->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_ITEMS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_ITEMS, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } @@ -1377,11 +1358,12 @@ int cUPnPItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID return -1; } cUPnPClassItem* Item = (cUPnPClassItem*) Object; - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_ITEMS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%Q", + SQLITE_TABLE_ITEMS, + SQLITE_COL_OBJECTID, + *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1437,7 +1419,7 @@ int cUPnPContainerMediator::objectToDatabase(cUPnPClassObject* Object){ if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL, Columns=NULL, Values=NULL; + cString Columns=NULL, Values=NULL; char *Value=NULL; cString Properties[] = { SQLITE_COL_OBJECTID, @@ -1447,26 +1429,22 @@ int cUPnPContainerMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property); Property++){ - Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!Container->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Container->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); + Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_CONTAINERS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_CONTAINERS, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } for(unsigned int i=0; igetSearchClasses()->size(); i++){ cClass Class = Container->getSearchClasses()->at(i); - Columns = cString::sprintf("%s,%s,%s", SQLITE_COL_OBJECTID, SQLITE_COL_CLASS, SQLITE_COL_CLASSDERIVED); - Values = cString::sprintf("'%s','%s','%s'", *Container->getID(), *Class.ID, Class.includeDerived?"1":"0"); - Statement = cString::sprintf(Format, SQLITE_TABLE_SEARCHCLASS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + Columns = cSQLiteDatabase::sprintf("%s,%s,%s", SQLITE_COL_OBJECTID, SQLITE_COL_CLASS, SQLITE_COL_CLASSDERIVED); + Values = cSQLiteDatabase::sprintf("%Q,%Q,%d", *Container->getID(), *Class.ID, Class.includeDerived?1:0); + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_SEARCHCLASS, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } @@ -1482,10 +1460,9 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_CONTAINERS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_CONTAINERS, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1514,11 +1491,10 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } } } - Statement = cString::sprintf("SELECT %s FROM %s WHERE %s=%s", SQLITE_COL_OBJECTID, + if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%s", SQLITE_COL_OBJECTID, SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID, - *ID); - if(this->mDatabase->execStatement(Statement)){ + *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1530,8 +1506,7 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } } } - Statement = cString::sprintf(Format, SQLITE_TABLE_SEARCHCLASS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_SEARCHCLASS, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1597,7 +1572,7 @@ int cUPnPVideoItemMediator::objectToDatabase(cUPnPClassObject* Object){ if(cUPnPItemMediator::objectToDatabase(Object)) return -1; cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL, Columns=NULL, Values=NULL; + cString Columns=NULL, Values=NULL; char *Value=NULL; cString Properties[] = { SQLITE_COL_OBJECTID, @@ -1614,18 +1589,14 @@ int cUPnPVideoItemMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property); Property++){ - Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!VideoItem->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoItem->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); - + Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOITEMS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOITEMS, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } @@ -1639,10 +1610,9 @@ int cUPnPVideoItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOITEMS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOITEMS, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1743,7 +1713,7 @@ int cUPnPVideoBroadcastMediator::objectToDatabase(cUPnPClassObject* Object){ if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL, Columns=NULL, Values=NULL; + cString Columns=NULL, Values=NULL; char *Value=NULL; cString Properties[] = { SQLITE_COL_OBJECTID, @@ -1754,18 +1724,14 @@ int cUPnPVideoBroadcastMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property); Property++){ - Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!VideoBroadcast->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoBroadcast->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); - + Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOBROADCASTS, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOBROADCASTS, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } @@ -1779,10 +1745,9 @@ int cUPnPVideoBroadcastMediator::databaseToObject(cUPnPClassObject* Object, cUPn } cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_VIDEOBROADCASTS, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOBROADCASTS, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return -1; } @@ -1847,7 +1812,7 @@ int cUPnPMovieMediator::objectToDatabase(cUPnPClassObject* Object){ if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Statement=NULL, Columns=NULL, Values=NULL; + cString Columns=NULL, Values=NULL; char *Value=NULL; cString Properties[] = { SQLITE_COL_OBJECTID, @@ -1856,18 +1821,14 @@ int cUPnPMovieMediator::objectToDatabase(cUPnPClassObject* Object){ NULL }; for(cString* Property = Properties; *(*Property); Property++){ - Columns = cString::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); + Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); if(!Movie->getProperty(*Property, &Value)){ ERROR("No such property '%s' in object with ID '%s'",*(*Property),* Movie->getID()); return -1; } - char *escapedValue; - escapeSQLite(Value, &escapedValue); - Values = cString::sprintf("%s%s'%s'", *Values?*Values:"", *Values?",":"", escapedValue?escapedValue:"NULL"); - + Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); } - Statement = cString::sprintf(Format, SQLITE_TABLE_MOVIES, *Columns, *Values); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_MOVIES, *Columns, *Values)){ ERROR("Error while executing statement"); return -1; } @@ -1881,10 +1842,9 @@ int cUPnPMovieMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID } cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Statement = NULL, Column = NULL, Value = NULL; + cString Column = NULL, Value = NULL; cRows* Rows; cRow* Row; - Statement = cString::sprintf(Format, SQLITE_TABLE_MOVIES, SQLITE_COL_OBJECTID, *ID); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement(Format, SQLITE_TABLE_MOVIES, SQLITE_COL_OBJECTID, *ID)){ ERROR("Error while executing statement"); return -1; } diff --git a/database/resources.cpp b/database/resources.cpp index e1bfca2..7d01ceb 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -33,11 +33,7 @@ cUPnPResources* cUPnPResources::getInstance(){ } int cUPnPResources::loadResources(){ - cString Statement = cString::sprintf("SELECT %s FROM %s", - SQLITE_COL_RESOURCEID, - SQLITE_TABLE_RESOURCES - ); - if(this->mDatabase->execStatement(Statement)){ + if(this->mDatabase->execStatement("SELECT %s FROM %s",SQLITE_COL_RESOURCEID,SQLITE_TABLE_RESOURCES)){ ERROR("Error while executing statement"); return -1; } @@ -55,13 +51,11 @@ int cUPnPResources::loadResources(){ } int cUPnPResources::getResourcesOfObject(cUPnPClassObject* Object){ - cString Statement = cString::sprintf("SELECT %s FROM %s WHERE %s='%s'", + if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%Q", SQLITE_COL_RESOURCEID, SQLITE_TABLE_RESOURCES, SQLITE_COL_OBJECTID, - *Object->getID() - ); - if(this->mDatabase->execStatement(Statement)){ + *Object->getID())){ ERROR("Error while executing statement"); return -1; } @@ -187,12 +181,10 @@ cUPnPResourceMediator::~cUPnPResourceMediator(){} cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ cUPnPResource* Resource = new cUPnPResource; Resource->mResourceID = ResourceID; - cString Statement = cString::sprintf("SELECT * FROM %s WHERE %s=%d", + if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%d", SQLITE_TABLE_RESOURCES, SQLITE_COL_RESOURCEID, - ResourceID - ); - if(this->mDatabase->execStatement(Statement)){ + ResourceID)){ ERROR("Error while executing statement"); return NULL; } @@ -248,42 +240,37 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ - char* escapedResource = NULL; - escapeSQLite(Resource->mResource, &escapedResource); - - cString Format = "UPDATE %s SET %s WHERE %s=%d"; - cString Sets = cString::sprintf("%s='%s'," - "%s='%s'," - "%s='%s'," - "%s=%ld," - "%s='%s'," - "%s=%d," - "%s=%d," - "%s=%d," - "%s=%d," - "%s=%d," - "%s='%s'," - "%s='%s'," - "%s=%d", - SQLITE_COL_OBJECTID, *Resource->mObjectID?*Resource->mObjectID:"NULL", - SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo?*Resource->mProtocolInfo:"NULL", - SQLITE_COL_RESOURCE, escapedResource?escapedResource:"NULL", - SQLITE_COL_SIZE, Resource->mSize, - SQLITE_COL_DURATION, *Resource->mDuration?*Resource->mDuration:"NULL", - SQLITE_COL_BITRATE, Resource->mBitrate, - SQLITE_COL_SAMPLEFREQUENCE, Resource->mSampleFrequency, - SQLITE_COL_BITSPERSAMPLE, Resource->mBitsPerSample, - SQLITE_COL_NOAUDIOCHANNELS, Resource->mNrAudioChannels, - SQLITE_COL_COLORDEPTH, Resource->mColorDepth, - SQLITE_COL_RESOLUTION, *Resource->mResolution?*Resource->mResolution:"NULL", - SQLITE_COL_CONTENTTYPE, *Resource->mContentType, - SQLITE_COL_RESOURCETYPE, Resource->mResourceType - ); - - free(escapedResource); - cString Statement = cString::sprintf(Format, SQLITE_TABLE_RESOURCES, *Sets, SQLITE_COL_RESOURCEID, Resource->mResourceID); - - if(this->mDatabase->execStatement(Statement)){ + cString Format = "UPDATE %s SET %s=%Q," + "%s=%Q," + "%s=%Q," + "%s=%ld," + "%s=%Q," + "%s=%d," + "%s=%d," + "%s=%d," + "%s=%d," + "%s=%d," + "%s=%Q," + "%s=%Q," + "%s=%d" + " WHERE %s=%d"; + + if(this->mDatabase->execStatement(Format, + SQLITE_TABLE_RESOURCES, + SQLITE_COL_OBJECTID, *Resource->mObjectID, + SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo, + SQLITE_COL_RESOURCE, *Resource->mResource, + SQLITE_COL_SIZE, Resource->mSize, + SQLITE_COL_DURATION, *Resource->mDuration, + SQLITE_COL_BITRATE, Resource->mBitrate, + SQLITE_COL_SAMPLEFREQUENCE, Resource->mSampleFrequency, + SQLITE_COL_BITSPERSAMPLE, Resource->mBitsPerSample, + SQLITE_COL_NOAUDIOCHANNELS, Resource->mNrAudioChannels, + SQLITE_COL_COLORDEPTH, Resource->mColorDepth, + SQLITE_COL_RESOLUTION, *Resource->mResolution, + SQLITE_COL_CONTENTTYPE, *Resource->mContentType, + SQLITE_COL_RESOURCETYPE, Resource->mResourceType, + SQLITE_COL_RESOURCEID, Resource->mResourceID)){ ERROR("Error while executing statement"); return -1; } @@ -294,9 +281,7 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo){ cUPnPResource* Resource = new cUPnPResource; - char* escapedResource = NULL; - - cString Statement = cString::sprintf("INSERT INTO %s (%s,%s,%s,%s,%s) VALUES ('%s','%s','%s','%s','%d')", + if(this->mDatabase->execStatement("INSERT INTO %s (%s,%s,%s,%s,%s) VALUES (%Q,%Q,%Q,%Q,%d)", SQLITE_TABLE_RESOURCES, SQLITE_COL_OBJECTID, SQLITE_COL_RESOURCE, @@ -304,14 +289,10 @@ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int SQLITE_COL_CONTENTTYPE, SQLITE_COL_RESOURCETYPE, *Object->getID(), - escapeSQLite(ResourceFile, &escapedResource), + *ResourceFile, *ProtocolInfo, *ContentType, - ResourceType - ); - free(escapedResource); - - if(this->mDatabase->execStatement(Statement)){ + ResourceType)){ ERROR("Error while executing statement"); return NULL; } diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 9ba69eb..189f4a4 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -129,9 +129,10 @@ int cLiveReceiver::read(char* buf, size_t buflen){ if(!this->IsAttached()) bytesRead = -1; else { - int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; // 10 Seconds timeout with no data - while(!this->mOutputBuffer->Available()){ - WARNING("No data, waiting..."); + int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; + // Wait until the buffer size is at least half the requested buffer length + while((unsigned)this->mOutputBuffer->Available() < (buflen / 2) ){ + WARNING("Too few data, waiting..."); cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ MESSAGE("Lost device..."); diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h index 9da8923..6b04619 100644 --- a/receiver/livereceiver.h +++ b/receiver/livereceiver.h @@ -12,9 +12,10 @@ #include "filehandle.h" #include #include +#include #define RECEIVER_WAIT_ON_NODATA 50 // 50 ms -#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 10 // 10s +#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s class cLiveReceiver : public cReceiver, public cThread, public cFileHandle { public: -- cgit v1.2.3 From 6b3a6ab4182e9468dfcf5ff8aae85f9b2b4bbb6a Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Thu, 29 Oct 2009 18:45:32 +0100 Subject: Added missing icons --- web/icons/upnpIconLrg.jpeg | Bin 0 -> 6620 bytes web/icons/upnpIconLrg.png | Bin 0 -> 17309 bytes web/icons/upnpIconSm.jpeg | Bin 0 -> 2416 bytes web/icons/upnpIconSm.png | Bin 0 -> 4769 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 web/icons/upnpIconLrg.jpeg create mode 100755 web/icons/upnpIconLrg.png create mode 100755 web/icons/upnpIconSm.jpeg create mode 100755 web/icons/upnpIconSm.png diff --git a/web/icons/upnpIconLrg.jpeg b/web/icons/upnpIconLrg.jpeg new file mode 100755 index 0000000..6421267 Binary files /dev/null and b/web/icons/upnpIconLrg.jpeg differ diff --git a/web/icons/upnpIconLrg.png b/web/icons/upnpIconLrg.png new file mode 100755 index 0000000..d93e7c0 Binary files /dev/null and b/web/icons/upnpIconLrg.png differ diff --git a/web/icons/upnpIconSm.jpeg b/web/icons/upnpIconSm.jpeg new file mode 100755 index 0000000..b163f05 Binary files /dev/null and b/web/icons/upnpIconSm.jpeg differ diff --git a/web/icons/upnpIconSm.png b/web/icons/upnpIconSm.png new file mode 100755 index 0000000..d4320f4 Binary files /dev/null and b/web/icons/upnpIconSm.png differ -- cgit v1.2.3 From 7d596d673c1918eb962acf296a518ac5e50815fc Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Fri, 30 Oct 2009 11:12:05 +0100 Subject: Fixed issue due changing statement parsing --- database/database.cpp | 6 ++---- database/database.h | 4 ++-- database/metadata.cpp | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/database/database.cpp b/database/database.cpp index 4355cbd..b3d11b2 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -127,10 +127,8 @@ cRow::cRow(){ } cRow::~cRow(){ - for(int i=0;iColCount;i++){ - delete Columns[i]; - delete Values[i]; - } + delete [] this->Columns; + delete [] this->Values; this->Columns = NULL; this->Values = NULL; } diff --git a/database/database.h b/database/database.h index ecd43e4..041772e 100644 --- a/database/database.h +++ b/database/database.h @@ -129,7 +129,7 @@ "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) "\ + "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL) "\ ") THEN "\ "RAISE(" SQLITE_TRANSACTION_TYPE ", "\ "'INSERT on table " TableB " failed due constraint violation "\ @@ -146,7 +146,7 @@ "WHEN ("\ "((SELECT " SQLITE_COL_OBJECTID " FROM " TableA " "\ "WHERE " SQLITE_COL_OBJECTID "=NEW." SQLITE_COL_OBJECTID " "\ - "AND " SQLITE_COL_CLASS " LIKE '" Class "%') IS NULL)"\ + "AND " SQLITE_COL_CLASS " LIKE '" Class "%%') IS NULL)"\ ") THEN "\ "RAISE(" SQLITE_TRANSACTION_TYPE ", "\ "'UPDATE on table " TableB " failed due constraint violation "\ diff --git a/database/metadata.cpp b/database/metadata.cpp index ebe530b..3316522 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -94,7 +94,7 @@ unsigned int cMediaDatabase::getSystemUpdateID(){ } cUPnPObjectID cMediaDatabase::getNextObjectID(){ - cString Statement, Column, Value; + cString Column, Value; if(this->mDatabase->execStatement("SELECT Key FROM %s WHERE KeyID=%Q", SQLITE_TABLE_PRIMARY_KEYS, PK_OBJECTS)){ -- cgit v1.2.3 From 4510b4d123a4f62c49c55fa517f15df4fa90ebec Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Fri, 30 Oct 2009 18:30:57 +0100 Subject: Fixed memory leak with device description --- server/server.cpp | 2 +- upnpcomponents/dlna.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/server.cpp b/server/server.cpp index feebcb1..03750bd 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -118,7 +118,7 @@ bool cUPnPServer::init(void){ //register media server device to SDK cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); - this->mDeviceDescription = cDlna::getInstance()->getDeviceDescription(URLBase); + this->mDeviceDescription = cString(cDlna::getInstance()->getDeviceDescription(URLBase),true); MESSAGE("Register Media Server Device"); ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, diff --git a/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp index 0b15cbe..eaa23c1 100644 --- a/upnpcomponents/dlna.cpp +++ b/upnpcomponents/dlna.cpp @@ -232,5 +232,5 @@ const char* cDlna::getDeviceDescription(const char* URLBase){ // UPNP_AVT_CONTROL_URL, // UPnP AVT Control URL // UPNP_AVT_EVENT_URL // UPnP AVT Event URL ); - return description; + return strdup0(*description); } \ No newline at end of file -- cgit v1.2.3 From 2d245fcabb385347359759de8e6c40ce16e43cab Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Thu, 19 Nov 2009 12:21:55 +0100 Subject: Added options for verbosity level and auto detect settings --- HISTORY | 4 + README | 40 +- common.cpp | 20 +- common.h | 124 ++- database/database.cpp | 15 +- database/database.h | 347 ++++++--- database/metadata.cpp | 88 ++- database/metadata.h | 149 +++- database/object.cpp | 112 +-- database/object.h | 1420 ++++++++++++++++++++++++++++++++-- database/resources.cpp | 14 +- database/resources.h | 111 +++ misc/avdetector.cpp | 2 +- misc/avdetector.h | 19 + misc/config.cpp | 18 +- misc/config.h | 49 +- misc/menusetup.cpp | 4 +- misc/menusetup.h | 31 +- misc/search.cpp | 66 +- misc/search.h | 76 +- misc/util.cpp | 19 - misc/util.h | 101 ++- receiver/filehandle.h | 90 ++- receiver/livereceiver.cpp | 28 +- receiver/livereceiver.h | 66 +- receiver/recplayer.cpp | 10 +- receiver/recplayer.h | 18 + server/server.cpp | 54 +- server/server.h | 65 +- upnp.cpp | 17 +- upnp.h | 80 +- upnpcomponents/connectionmanager.cpp | 48 +- upnpcomponents/connectionmanager.h | 40 +- upnpcomponents/contentdirectory.cpp | 8 +- upnpcomponents/contentdirectory.h | 20 +- upnpcomponents/dlna.cpp | 8 +- upnpcomponents/dlna.h | 108 ++- upnpcomponents/upnpservice.cpp | 4 +- upnpcomponents/upnpservice.h | 106 ++- upnpcomponents/upnpwebserver.cpp | 42 +- upnpcomponents/upnpwebserver.h | 45 +- 41 files changed, 3154 insertions(+), 532 deletions(-) diff --git a/HISTORY b/HISTORY index 854250e..a510f03 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,10 @@ VDR Plugin 'upnp' Revision History ---------------------------------- +2009-11-19: Version 0.0.1-alpha4 + +- New: Added options for verbosity level and autodetect settings. + 2009-10-23: Version 0.0.1-alpha1 - Fixed #185: Database rejected statements with single quotes inside strings diff --git a/README b/README index 1557c0b..1eba683 100644 --- a/README +++ b/README @@ -53,6 +53,29 @@ The command line settings are: Supported ports: 0 (auto detect) 49152-65535 (user defined) + -d --autodetect Force auto detection + Use this option to + overwrite the setup menu + options. + -v --verbose Increase verbosity level + The more v options the + higher the output level + +The verbose option can be more than once. With each option the verbosity level +will be increased. The maximum level is 5. Further options are silently ignored. + + -v Print most important messages + -vv Print messages from the components + i.e. the webserver, CDS, CMS, etc. + -vvv Print messages from receivers and players + and other additional components + -vvvv You can't get enough, hum? + This will print SQL messages and DIDL + messages + -vvvvv Can you read the matrix? You can't? + Then try first reading SQL statements, + fetches, buffer and parser outputs or + any other outputs. If not options are set, menu options will be used. @@ -68,7 +91,18 @@ Dependencies: This plugin is tested with and requires the following libraries to work: -libupnp-1.6.6 -libsqlite-3.6 +libupnp-1.6.6 The UPnP SDK +libsqlite-3.6 SQLite 3 Database +libavcodec-svn20090303 FFMPEG Library for analyzing audio video codecs +libavformat-svn20090303 FFMPEG Library for analyzing audio video formats +boost::spirit Grammar parser +boost::function Boost function library +boost::bind Boost bind library -libupnp-1.8.0 is known not to work with this plugin! +The boost libraries are usually available in a packed version, so that only a +single installation is required. The FFMPEG libraries comes with FFMPEG itself. + +ATTENTION: DO NOT USE ANOTHER VERSION OF LIBUPNP. + +libupnp-1.8.0 is known not to work with this plugin! Versions below 1.6.6 may +work. However, there may exist some unknown issues. diff --git a/common.cpp b/common.cpp index 946c48f..f32f9b2 100644 --- a/common.cpp +++ b/common.cpp @@ -7,9 +7,12 @@ #include #include "common.h" +#include "misc/config.h" DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts" }; DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = { "AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts" }; +DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO = { "MPEG_TS_SD_EU_ISO", "video/mpeg" }; +DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO = { "AVC_TS_HD_EU_ISO", "video/mpeg" }; DLNAProfile DLNA_PROFILE_MPEG1_L3 = { "MP3", "audio/mpeg" }; DLNAIconProfile DLNA_ICON_JPEG_SM_24 = { "image/jpeg", 48, 48, 24 }; @@ -19,11 +22,14 @@ DLNAIconProfile DLNA_ICON_PNG_LRG_24A = { "image/png", 120, 120, 24 }; #define MESSAGE_SIZE 256 -void message(const char* File, int Line, const char* Format, ...){ - va_list ap; - char Message[MESSAGE_SIZE]; - snprintf(Message, MESSAGE_SIZE, "(%s:%d) %s\n", File, Line, Format); - va_start(ap, Format); - vprintf(Message, ap); - va_end(ap); +void message(int Level, const char* , int , const char* Format, ...){ + if(Level && cUPnPConfig::verbosity >= Level){ + va_list ap; + char Message[MESSAGE_SIZE]; + + snprintf(Message, sizeof(Message), "[%d] %s", cThread::ThreadId(), Format); + va_start(ap, Format); + vsyslog(LOG_NOTICE, Message, ap); + va_end(ap); + } } \ No newline at end of file diff --git a/common.h b/common.h index 6dc7975..6caa065 100644 --- a/common.h +++ b/common.h @@ -91,7 +91,7 @@ #define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL #define prop(s) substr(s, 0, strchr(s,'@')-s) -void message(const char* File, int Line, const char* Format, ...) __attribute__ ((format (printf, 3, 4))); +void message(int level, const char* File, int Line, const char* Format, ...) __attribute__ ((format (printf, 4, 5))); /**************************************************** * @@ -154,12 +154,48 @@ void message(const char* File, int Line, const char* Format, ...) __attribute__ * Messages are additional information about the servers behavior. This will * be useful for debugging. */ -#ifdef DEBUG -#define MESSAGE(s...) message(__FILE__, __LINE__, "UPnP server message: " s) +#ifndef DEBUG +#define MESSAGE(l,s...) message(l,__FILE__, __LINE__, "UPnP server message: " s) #else -#define MESSAGE(s...) dsyslog("UPnP server message: " s) +#define MESSAGE(l,s...) dsyslog("UPnP server message: " s) #endif + +/** + * Define at which level the different messages will be printed + * + * The log levels reach from 1 to 5, where 1 is the highest log + * priority and 5 the lowest. 0 will deactivate the logging of + * the message. If you want to specifiy a certain level, add + * 'v' options as many as required for the log level. + * + * @example + * - \-v Show warnings + * - \-vv Log level 1 + * - \-vvv Log level 2 + * - \-vvvv Log level 3 + * - \-vvvvv Log level 4 + * - \-vvvvvv Log level 5 + */ +#define VERBOSE_SQL 4 +#define VERBOSE_SQL_FETCHES 5 +#define VERBOSE_SQL_STATEMENTS 5 +#define VERBOSE_DIDL 4 +#define VERBOSE_LIVE_TV 3 +#define VERBOSE_RECORDS 3 +#define VERBOSE_CUSTOMFILES 3 +#define VERBOSE_SDK 1 +#define VERBOSE_EPG_UPDATES 3 +#define VERBOSE_WEBSERVER 2 +#define VERBOSE_MODIFICATIONS 2 +#define VERBOSE_METADATA 3 +#define VERBOSE_CUSTOM_OUTPUT 5 +#define VERBOSE_PARSERS 5 +#define VERBOSE_BUFFERS 5 +#define VERBOSE_CDS 2 +#define VERBOSE_CMS 2 +#define VERBOSE_OBJECTS 3 + /**************************************************** * * 1.3 Plugin constants @@ -648,17 +684,17 @@ enum UPnPWriteStatus { * The following operation field assumes that s0 is NOT changing. Only changes to sN are permitted. * If s0 and/or sN changes these fields must be set to false. Use DLNA_FLAG_*_BASED_SEEK flags instead. */ -#define DLNA_OPERATION_NONE 00 // No seek operations supported -#define DLNA_OPERATION_TIME_SEEK_RANGE 10 // is the server supporting time based seeks? -#define DLNA_OPERATION_RANGE 01 // or byte based seeks? +#define DLNA_OPERATION_NONE 00 ///< No seek operations supported +#define DLNA_OPERATION_TIME_SEEK_RANGE 10 ///< is the server supporting time based seeks? +#define DLNA_OPERATION_RANGE 01 ///< or byte based seeks? -#define DLNA_CONVERSION_TRANSCODED 1 // the content was converted from one media format to another -#define DLNA_CONVERSION_NONE 0 // the content is available without conversion +#define DLNA_CONVERSION_TRANSCODED 1 ///< the content was converted from one media format to another +#define DLNA_CONVERSION_NONE 0 ///< the content is available without conversion -#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; // 1 is required, but omited in the PS parameter +#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; ///< 1 is required, but omited in the PS parameter -#define DLNA_TRANSFER_PROTOCOL_HTTP 1 // use http tranfer -#define DLNA_TRANSFER_PROTOCOL_RTP 2 // use rtp tranfer +#define DLNA_TRANSFER_PROTOCOL_HTTP 1 ///< use http tranfer +#define DLNA_TRANSFER_PROTOCOL_RTP 2 ///< use rtp tranfer /**************************************************** * @@ -666,21 +702,21 @@ enum UPnPWriteStatus { * ****************************************************/ -#define DLNA_FLAG_SENDER_PACED 1 << 31 // is the server setting the pace (i.e. RTP)? -#define DLNA_FLAG_TIME_BASED_SEEK 1 << 30 // is the server supporting time based seeks? -#define DLNA_FLAG_BYTE_BASED_SEEK 1 << 29 // or byte based seeking? -#define DLNA_FLAG_PLAY_CONTAINER 1 << 28 // is it possible to play all contents of a container? -#define DLNA_FLAG_S0_INCREASE 1 << 27 // is the beginning changing (time shift)? -#define DLNA_FLAG_SN_INCREASE 1 << 26 // is the end changing (live-TV)? -#define DLNA_FLAG_RTSP_PAUSE 1 << 25 // is pausing rtp streams permitted? -#define DLNA_FLAG_STREAMING_TRANSFER 1 << 24 // is the transfer a stream (Audio/AV)? -#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 << 23 // is the transfer interactiv (printings)? -#define DLNA_FLAG_BACKGROUND_TRANSFER 1 << 22 // is the tranfer done in background (downloaded)? -#define DLNA_FLAG_CONNECTION_STALLING 1 << 21 // can the connection be paused on HTTP streams? -#define DLNA_FLAG_VERSION_1_5 1 << 20 // does the server complies with DLNA V1.5 -#define DLNA_FLAG_CLEARTEXT_CONTENT 1 << 16 // (Link Protection) currently not used -#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 // (Link Protection) currently not used -#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 // (Link Protection) currently not used +#define DLNA_FLAG_SENDER_PACED 1 << 31 ///< is the server setting the pace (i.e. RTP)? +#define DLNA_FLAG_TIME_BASED_SEEK 1 << 30 ///< is the server supporting time based seeks? +#define DLNA_FLAG_BYTE_BASED_SEEK 1 << 29 ///< or byte based seeking? +#define DLNA_FLAG_PLAY_CONTAINER 1 << 28 ///< is it possible to play all contents of a container? +#define DLNA_FLAG_S0_INCREASE 1 << 27 ///< is the beginning changing (time shift)? +#define DLNA_FLAG_SN_INCREASE 1 << 26 ///< is the end changing (live-TV)? +#define DLNA_FLAG_RTSP_PAUSE 1 << 25 ///< is pausing rtp streams permitted? +#define DLNA_FLAG_STREAMING_TRANSFER 1 << 24 ///< is the transfer a stream (Audio/AV)? +#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 << 23 ///< is the transfer interactiv (printings)? +#define DLNA_FLAG_BACKGROUND_TRANSFER 1 << 22 ///< is the tranfer done in background (downloaded)? +#define DLNA_FLAG_CONNECTION_STALLING 1 << 21 ///< can the connection be paused on HTTP streams? +#define DLNA_FLAG_VERSION_1_5 1 << 20 ///< does the server complies with DLNA V1.5 +#define DLNA_FLAG_CLEARTEXT_CONTENT 1 << 16 ///< (Link Protection) currently not used +#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 ///< (Link Protection) currently not used +#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 ///< (Link Protection) currently not used #define DLNA_FLAGS_PLUGIN_SUPPORT DLNA_FLAG_BYTE_BASED_SEEK | \ DLNA_FLAG_SN_INCREASE | \ @@ -703,29 +739,37 @@ enum UPnPWriteStatus { * label field as it seams to be not needed. */ struct DLNAProfile { - const char* ID; - const char* mime; + 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; - unsigned short width; - unsigned short height; - unsigned char bitDepth; + 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 }; /* Images */ /* Audio */ -extern DLNAProfile DLNA_PROFILE_MPEG1_L3; // MP3 +extern DLNAProfile DLNA_PROFILE_MPEG1_L3; ///< DLNA MP3 Profile /* Video */ -extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU; // This is the profile for DVB-TV -extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; // This is the profile for DVB-TV +extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU; ///< DLNA Profile for DVB Television broadcasts +extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; ///< DLNA Profile for HD DVB Television broadcasts +extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO; ///< DLNA Profile for DVB Television broadcasts without timestamp +extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO; ///< DLNA Profile for HD DVB Television broadcasts without timestamp /* Icons */ -extern DLNAIconProfile DLNA_ICON_JPEG_SM_24; -extern DLNAIconProfile DLNA_ICON_JPEG_LRG_24; -extern DLNAIconProfile DLNA_ICON_PNG_SM_24A; -extern DLNAIconProfile DLNA_ICON_PNG_LRG_24A; +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 +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 /**************************************************** * diff --git a/database/database.cpp b/database/database.cpp index b3d11b2..e47dcbf 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -46,9 +46,7 @@ int cSQLiteDatabase::exec(const char* Statement){ return -1; } this->mRows = new cRows; -#ifdef SQLITE_PRINT_STATEMENTS - MESSAGE("SQLite: %s", Statement); -#endif + MESSAGE(VERBOSE_SQL_STATEMENTS,"SQLite: %s", Statement); if(sqlite3_exec(this->mDatabase, Statement, cSQLiteDatabase::getResultRow, (cSQLiteDatabase*)this, &Error)!=SQLITE_OK){ ERROR("Database error: %s", Error); ERROR("Statement was: %s", Statement); @@ -143,13 +141,12 @@ bool cRow::fetchColumn(cString* Column, cString* Value){ return ret; } + bool cRow::fetchColumn(char** Column, char** Value){ if(currentCol>=this->ColCount){ return false; } - #ifdef SQLITE_PRINT_FETCHES - MESSAGE("Fetching column %s='%s' (%d/%d)", this->Columns[currentCol], this->Values[currentCol], currentCol+1, this->ColCount); - #endif + MESSAGE(VERBOSE_SQL_FETCHES,"Fetching column %s='%s' (%d/%d)", this->Columns[currentCol], this->Values[currentCol], currentCol+1, this->ColCount); *Column = strdup0(this->Columns[currentCol]); if(this->Values[currentCol]){ *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup(this->Values[currentCol]):NULL; @@ -169,7 +166,7 @@ int cSQLiteDatabase::initialize(){ sqlite3_close(this->mDatabase); return -1; } - MESSAGE("Database file %s opened.", *File); + MESSAGE(VERBOSE_SDK,"Database file %s opened.", *File); if(this->initializeTables()){ ERROR("Error while creating tables"); return -1; @@ -191,17 +188,19 @@ void cSQLiteDatabase::startTransaction(){ } } this->execStatement("BEGIN TRANSACTION"); - MESSAGE("Start new transaction"); + MESSAGE(VERBOSE_SQL,"Start new transaction"); this->mActiveTransaction = true; } void cSQLiteDatabase::commitTransaction(){ this->execStatement("COMMIT TRANSACTION"); + MESSAGE(VERBOSE_SQL,"Commited transaction"); this->mActiveTransaction = false; } void cSQLiteDatabase::rollbackTransaction(){ this->execStatement("ROLLBACK TRANSACTION"); + MESSAGE(VERBOSE_SQL,"Rolled back transaction"); this->mActiveTransaction = false; } diff --git a/database/database.h b/database/database.h index 041772e..5bb595f 100644 --- a/database/database.h +++ b/database/database.h @@ -12,8 +12,6 @@ #include #include "../common.h" -#define SQLITE_PRINT_STATEMENTS -#define SQLITE_PRINT_FETCHES #define SQLITE_CASCADE_DELETES #define PK_OBJECTS TOSTRING(1) @@ -144,7 +142,7 @@ "FOR EACH ROW BEGIN "\ "SELECT CASE "\ "WHEN ("\ - "((SELECT " SQLITE_COL_OBJECTID " FROM " TableA " "\ + "((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 "\ @@ -238,11 +236,11 @@ #define SQLITE_DELETE_PARENT_TRIGGER SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_OBJECTS, SQLITE_COL_PARENTID) #endif - /**********************************************\ - * * - * Primary keys * - * * - \**********************************************/ +/**********************************************\ +* * +* Primary keys * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_PRIMARY_KEYS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_PRIMARY_KEYS \ @@ -274,11 +272,11 @@ "UPDATE " SQLITE_TABLE_PRIMARY_KEYS " SET Key=Key+1 WHERE KeyID=" PK_OBJECTS "; "\ "END;" - /**********************************************\ - * * - * System settings * - * * - \**********************************************/ +/**********************************************\ +* * +* System settings * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_SYSTEM "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_SYSTEM " "\ @@ -294,11 +292,11 @@ "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 * - * * - \**********************************************/ +/**********************************************\ +* * +* Fast item finder * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_ITEMFINDER "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_ITEMFINDER " "\ @@ -310,11 +308,11 @@ #define SQLITE_TRIGGER_D_OBJECTS_ITEMFINDER SQLITE_DELETE_TRIGGER(SQLITE_TABLE_OBJECTS,\ SQLITE_TABLE_ITEMFINDER) - /**********************************************\ - * * - * Objects * - * * - \**********************************************/ +/**********************************************\ +* * +* Objects * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_OBJECTS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_OBJECTS \ @@ -369,11 +367,11 @@ SQLITE_COL_PARENTID " must uniquely be -1') "\ "END; END;" - /**********************************************\ - * * - * Items * - * * - \**********************************************/ +/**********************************************\ +* * +* Items * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_ITEMS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_ITEMS \ @@ -403,11 +401,11 @@ #define SQLITE_TRIGGER_D_ITEMS_ITEMS SQLITE_DELETE_REFERENCE_TRIGGER(SQLITE_TABLE_ITEMS, SQLITE_COL_REFERENCEID) - /**********************************************\ - * * - * Containers * - * * - \**********************************************/ +/**********************************************\ +* * +* Containers * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_CONTAINER "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_CONTAINERS \ @@ -429,11 +427,11 @@ SQLITE_TABLE_CONTAINERS,\ UPNP_CLASS_CONTAINER) - /**********************************************\ - * * - * Video items * - * * - \**********************************************/ +/**********************************************\ +* * +* Video items * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_VIDEOITEMS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_VIDEOITEMS \ @@ -461,11 +459,11 @@ SQLITE_TABLE_VIDEOITEMS, \ UPNP_CLASS_VIDEO) - /**********************************************\ - * * - * Audio items * - * * - \**********************************************/ +/**********************************************\ +* * +* Audio items * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_AUDIOITEMS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_AUDIOITEMS \ @@ -488,11 +486,11 @@ SQLITE_TABLE_AUDIOITEMS, \ UPNP_CLASS_AUDIO) - /**********************************************\ - * * - * Image items * - * * - \**********************************************/ +/**********************************************\ +* * +* Image items * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_IMAGEITEMS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_IMAGEITEMS \ @@ -517,11 +515,11 @@ SQLITE_TABLE_IMAGEITEMS, \ UPNP_CLASS_IMAGE) - /**********************************************\ - * * - * Video broadcasts * - * * - \**********************************************/ +/**********************************************\ +* * +* Video broadcasts * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_VIDEOBROADCASTS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_VIDEOBROADCASTS \ @@ -543,11 +541,11 @@ SQLITE_TABLE_VIDEOBROADCASTS,\ UPNP_CLASS_VIDEOBC) - /**********************************************\ - * * - * Audio broadcasts * - * * - \**********************************************/ +/**********************************************\ +* * +* Audio broadcasts * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_AUDIOBROADCASTS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_AUDIOBROADCASTS \ @@ -570,11 +568,11 @@ SQLITE_TABLE_AUDIOBROADCASTS,\ UPNP_CLASS_AUDIOBC) - /**********************************************\ - * * - * Movies * - * * - \**********************************************/ +/**********************************************\ +* * +* Movies * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_MOVIES "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_MOVIES \ @@ -598,11 +596,11 @@ SQLITE_TABLE_MOVIES,\ UPNP_CLASS_MOVIE) - /**********************************************\ - * * - * Photos * - * * - \**********************************************/ +/**********************************************\ +* * +* Photos * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_PHOTOS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_PHOTOS \ @@ -621,11 +619,11 @@ SQLITE_TABLE_PHOTOS,\ UPNP_CLASS_PHOTO) - /**********************************************\ - * * - * Albums * - * * - \**********************************************/ +/**********************************************\ +* * +* Albums * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_ALBUMS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_ALBUMS \ @@ -651,11 +649,11 @@ SQLITE_TABLE_ALBUMS,\ UPNP_CLASS_ALBUM) - /**********************************************\ - * * - * Playlists * - * * - \**********************************************/ +/**********************************************\ +* * +* Playlists * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_PLAYLISTS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_PLAYLISTS \ @@ -683,11 +681,11 @@ SQLITE_TABLE_PLAYLISTS,\ UPNP_CLASS_PLAYLISTCONT) - /**********************************************\ - * * - * Search classes * - * * - \**********************************************/ +/**********************************************\ +* * +* Search classes * +* * +\**********************************************/ #define SQLITE_CREATE_TABLE_SEARCHCLASS "CREATE TABLE IF NOT EXISTS "\ SQLITE_TABLE_SEARCHCLASS \ @@ -798,6 +796,13 @@ 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: @@ -808,11 +813,50 @@ private: cRow(); public: virtual ~cRow(); + /** + * Number of columns in this row + * + * @return the number of rows + */ int Count(){ return this->ColCount; } - bool fetchColumn(cString* Column, cString* Value); - bool fetchColumn(char** Column, char** 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( + 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 { friend class cSQLiteDatabase; private: @@ -820,9 +864,29 @@ private: cRows(); public: virtual ~cRows(); - bool fetchRow(cRow** Row); + /** + * 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: @@ -839,17 +903,122 @@ private: static int getResultRow(void* DB, int NumCols, char** Values, char** ColNames); int exec(const char* Statement); public: - static const char* sprintf(const char* Format, ...); + /** + * 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; } - int execStatement(const char* Statement, ...); + /** + * 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(); - void setAutoCommit(bool Commit=true){ this->mAutoCommit = Commit; } + /** + * 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/database/metadata.cpp b/database/metadata.cpp index 3316522..91c512f 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -44,7 +44,7 @@ cMediaDatabase::~cMediaDatabase(){ } bool cMediaDatabase::init(){ - MESSAGE("Initializing..."); + MESSAGE(VERBOSE_SDK,"Initializing..."); if(this->prepareDatabase()){ ERROR("Initializing of database failed."); return false; @@ -122,7 +122,7 @@ cUPnPObjectID cMediaDatabase::getNextObjectID(){ int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ if(!Object || !FastFind){ - MESSAGE("Invalid fast find parameters"); + MESSAGE(VERBOSE_OBJECTS,"Invalid fast find parameters"); return -1; } @@ -140,7 +140,7 @@ int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ cUPnPClassObject* cMediaDatabase::getObjectByFastFind(const char* FastFind){ if(!FastFind) return NULL; - MESSAGE("Try to find Object with identifier %s", FastFind); + MESSAGE(VERBOSE_OBJECTS,"Try to find Object with identifier %s", FastFind); cString Column, Value; if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%Q", SQLITE_COL_OBJECTID, @@ -166,14 +166,14 @@ cUPnPClassObject* cMediaDatabase::getObjectByFastFind(const char* FastFind){ } cUPnPClassObject* cMediaDatabase::getObjectByID(cUPnPObjectID ID){ - MESSAGE("Try to find Object with ID '%s'", *ID); + MESSAGE(VERBOSE_OBJECTS, "Try to find Object with ID '%s'", *ID); cUPnPClassObject* Object; if((Object = this->mObjects->Get((unsigned int)ID))){ - MESSAGE("Found cached object with ID '%s'", *ID); + MESSAGE(VERBOSE_OBJECTS, "Found cached object with ID '%s'", *ID); } else if((Object = this->mFactory->getObject(ID))){ //this->cacheObject(Object); - MESSAGE("Found object with ID '%s' in database", *ID); + MESSAGE(VERBOSE_OBJECTS, "Found object with ID '%s' in database", *ID); } else { ERROR("No object with such ID '%s'", *ID); @@ -184,14 +184,14 @@ cUPnPClassObject* cMediaDatabase::getObjectByID(cUPnPObjectID ID){ void cMediaDatabase::cacheObject(cUPnPClassObject* Object){ if(this->mObjects->Get((unsigned int)Object->getID())==NULL){ - MESSAGE("Added %s to cache.", *Object->getID()); + MESSAGE(VERBOSE_OBJECTS ,"Added %s to cache.", *Object->getID()); this->mObjects->Add(Object, (unsigned int)Object->getID()); } } int cMediaDatabase::prepareDatabase(){ if(this->getObjectByID(0)==NULL){ - MESSAGE("Creating database structure"); + MESSAGE(VERBOSE_SDK, "Creating database structure"); cUPnPClassContainer* Root = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _(PLUGIN_SHORT_NAME)); Root->setID(0); if(this->mFactory->saveObject(Root)) return -1; @@ -248,7 +248,7 @@ int cMediaDatabase::prepareDatabase(){ } int cMediaDatabase::loadChannels(){ - MESSAGE("Loading channels"); + MESSAGE(VERBOSE_LIVE_TV ,"Loading channels"); cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); if(TV){ bool noResource = false; @@ -262,7 +262,7 @@ int cMediaDatabase::loadChannels(){ bool inList = false; tChannelID ChannelID = Channel->GetChannelID(); - MESSAGE("Determine if the channel %s is already listed", *ChannelID.ToString()); + MESSAGE(VERBOSE_LIVE_TV, "Determine if the channel %s is already listed", *ChannelID.ToString()); cUPnPClassVideoBroadcast* ChannelItem = NULL; ChannelItem = (cUPnPClassVideoBroadcast*)this->getObjectByFastFind(ChannelID.ToString()); @@ -271,18 +271,18 @@ int cMediaDatabase::loadChannels(){ if(!inList){ if(Channel->GroupSep()){ - MESSAGE("Skipping group '%s'", Channel->Name()); + MESSAGE(VERBOSE_LIVE_TV, "Skipping group '%s'", Channel->Name()); // Skip channel groups // Channel groups may be supported theoretically. However, DLNA states that a tuner needs // a consecutive list of channels. A simple work-around may be a virtual tuner for each group. } else if(Channel->Vpid()==0){ // TODO: add radio support - MESSAGE("Skipping radio '%s'", Channel->Name()); + MESSAGE(VERBOSE_LIVE_TV, "Skipping radio '%s'", Channel->Name()); } else { noResource = false; - MESSAGE("Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); + MESSAGE(VERBOSE_LIVE_TV, "Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); ChannelItem = (cUPnPClassVideoBroadcast*)this->mFactory->createObject(UPNP_CLASS_VIDEOBC, Channel->Name()); ChannelItem->setChannelName(Channel->Name()); ChannelItem->setChannelNr(Channel->Number()); @@ -301,7 +301,7 @@ int cMediaDatabase::loadChannels(){ this->mFactory->deleteObject(ChannelItem); return -1; } - MESSAGE("Successfuly added channel"); + MESSAGE(VERBOSE_LIVE_TV, "Successfuly added channel"); } else { // Delete temporarily created object with no resource @@ -310,7 +310,7 @@ int cMediaDatabase::loadChannels(){ } } else { - MESSAGE("Skipping %s, already in database", Channel->Name()); + MESSAGE(VERBOSE_LIVE_TV, "Skipping %s, already in database", Channel->Name()); } } } @@ -318,7 +318,7 @@ int cMediaDatabase::loadChannels(){ } int cMediaDatabase::loadRecordings(){ - MESSAGE("Loading recordings"); + MESSAGE(VERBOSE_RECORDS, "Loading recordings"); cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); if(Records){ bool noResource = false; @@ -330,7 +330,7 @@ int cMediaDatabase::loadRecordings(){ // Iterating the records bool inList = false; - MESSAGE("Determine if the channel %s is already listed", Recording->FileName()); + MESSAGE(VERBOSE_RECORDS, "Determine if the channel %s is already listed", Recording->FileName()); cUPnPClassMovie *MovieItem = NULL; @@ -342,7 +342,7 @@ int cMediaDatabase::loadRecordings(){ noResource = false; const cRecordingInfo* RecInfo = Recording->Info(); - MESSAGE("Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); + MESSAGE(VERBOSE_RECORDS, "Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()); MovieItem->setDescription(RecInfo->ShortText()); @@ -366,7 +366,7 @@ int cMediaDatabase::loadRecordings(){ this->mFactory->deleteObject(MovieItem); return -1; } - MESSAGE("Successfuly added movie"); + MESSAGE(VERBOSE_RECORDS, "Successfuly added movie"); } else { // Delete temporarily created object with no resource @@ -374,7 +374,7 @@ int cMediaDatabase::loadRecordings(){ } } else { - MESSAGE("Skipping %s, already in Database", Recording->FileName()); + MESSAGE(VERBOSE_RECORDS, "Skipping %s, already in Database", Recording->FileName()); } } } @@ -386,7 +386,7 @@ void cMediaDatabase::Action(){ while(this->Running()){ if(cSchedules::Modified() >= LastEPGUpdate){ - MESSAGE("Schedule changed. Updating..."); + MESSAGE(VERBOSE_EPG_UPDATES, "Schedule changed. Updating..."); updateChannelEPG(); LastEPGUpdate = cSchedules::Modified(); } @@ -399,19 +399,19 @@ void cMediaDatabase::updateChannelEPG(){ cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); if(TV){ // Iterating channels - MESSAGE("Getting schedule..."); + MESSAGE(VERBOSE_EPG_UPDATES, "Getting schedule..."); cSchedulesLock SchedulesLock; const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); cList* List = TV->getObjectList(); - MESSAGE("TV folder has %d items", List->Count()); + MESSAGE(VERBOSE_EPG_UPDATES, "TV folder has %d items", List->Count()); for(cUPnPClassVideoBroadcast* ChannelItem = (cUPnPClassVideoBroadcast*)List->First(); ChannelItem; ChannelItem = (cUPnPClassVideoBroadcast*)List->Next(ChannelItem) ){ - MESSAGE("Find channel by number %d", ChannelItem->getChannelNr()); + MESSAGE(VERBOSE_EPG_UPDATES, "Find channel by number %d", ChannelItem->getChannelNr()); cChannel* Channel = Channels.GetByNumber(ChannelItem->getChannelNr()); - MESSAGE("Found channel with ID %s", *Channel->GetChannelID().ToString()); + MESSAGE(VERBOSE_EPG_UPDATES, "Found channel with ID %s", *Channel->GetChannelID().ToString()); const cSchedule* Schedule = Schedules->GetSchedule(Channel); const cEvent* Event = Schedule?Schedule->GetPresentEvent():NULL; @@ -420,10 +420,10 @@ void cMediaDatabase::updateChannelEPG(){ time_t LastEPGChange = Event->StartTime(); time_t LastObjectChange = ChannelItem->modified(); - MESSAGE("Last event start: %s", ctime(&LastEPGChange)); - MESSAGE("Last object modification: %s", ctime(&LastObjectChange)); + MESSAGE(VERBOSE_EPG_UPDATES, "Last event start: %s", ctime(&LastEPGChange)); + MESSAGE(VERBOSE_EPG_UPDATES, "Last object modification: %s", ctime(&LastObjectChange)); if(LastEPGChange >= LastObjectChange){ - MESSAGE("Updating details"); + MESSAGE(VERBOSE_EPG_UPDATES, "Updating details"); if(Event){ ChannelItem->setTitle(Event->Title()?Event->Title():Channel->Name()); @@ -439,11 +439,11 @@ void cMediaDatabase::updateChannelEPG(){ this->mFactory->saveObject(ChannelItem); } else { - MESSAGE("Channel did not change"); + MESSAGE(VERBOSE_EPG_UPDATES, "Channel did not change"); } } else { - MESSAGE("No EPG data"); + MESSAGE(VERBOSE_EPG_UPDATES, "No EPG data"); ChannelItem->setTitle(Channel->Name()); ChannelItem->setLongDescription(NULL); ChannelItem->setDescription(NULL); @@ -452,19 +452,27 @@ void cMediaDatabase::updateChannelEPG(){ } } -int cMediaDatabase::browse(cUPnPResultSet** Results, const char* ID, bool BrowseMetadata, const char* Filter, unsigned int Offset, unsigned int Count, const char* SortCriteria){ +int cMediaDatabase::browse( + OUT cUPnPResultSet** Results, + IN const char* ID, + IN bool BrowseMetadata, + IN const char* Filter, + IN unsigned int Offset, + IN unsigned int Count, + IN const char* SortCriteria +){ *Results = new cUPnPResultSet; (*Results)->mNumberReturned = 0; (*Results)->mTotalMatches = 0; (*Results)->mResult = NULL; - MESSAGE("===== Browsing ====="); - MESSAGE("ID: %s", ID); - MESSAGE("Browse %s", BrowseMetadata?"metadata":"children"); - MESSAGE("Filter: %s", Filter); - MESSAGE("Offset: %d", Offset); - MESSAGE("Count: %d", Count); - MESSAGE("Sort: %s", SortCriteria); + MESSAGE(VERBOSE_DIDL, "===== Browsing ====="); + MESSAGE(VERBOSE_DIDL, "ID: %s", ID); + MESSAGE(VERBOSE_DIDL, "Browse %s", BrowseMetadata?"metadata":"children"); + MESSAGE(VERBOSE_DIDL, "Filter: %s", Filter); + MESSAGE(VERBOSE_DIDL, "Offset: %d", Offset); + MESSAGE(VERBOSE_DIDL, "Count: %d", Count); + MESSAGE(VERBOSE_DIDL, "Sort: %s", SortCriteria); cUPnPObjectID ObjectID = atoi(ID); @@ -498,7 +506,7 @@ int cMediaDatabase::browse(cUPnPResultSet** Results, const char* ID, bool Browse if(SortCriterias){ for(cSortCrit* SortBy = SortCriterias->First(); SortBy ; SortBy = SortCriterias->Next(SortBy)){ - MESSAGE("Sorting by %s %s", SortBy->Property, SortBy->SortDescending?"ascending":"descending"); + MESSAGE(VERBOSE_DIDL, "Sorting by %s %s", SortBy->Property, SortBy->SortDescending?"ascending":"descending"); Children->SortBy(SortBy->Property, SortBy->SortDescending); } } @@ -507,7 +515,7 @@ int cMediaDatabase::browse(cUPnPResultSet** Results, const char* ID, bool Browse if(Count==0) Count = Container->getChildCount(); while(Offset-- && (Child = Children->Next(Child))){} for(; Count && Child ; Child = Children->Next(Child), Count--){ - MESSAGE("Appending %s to didl", Child->getTitle()); + MESSAGE(VERBOSE_DIDL, "Appending %s to didl", Child->getTitle()); ixmlNode_appendChild(Root, Child->createDIDLFragment(DIDLDoc, FilterList)); (*Results)->mNumberReturned++; } diff --git a/database/metadata.h b/database/metadata.h index 6e3732c..4868231 100644 --- a/database/metadata.h +++ b/database/metadata.h @@ -16,17 +16,25 @@ #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; - int mTotalMatches; - const char* mResult; -}; - -struct cSearchCriteria { - const char* Property; - bool Descending; + 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; @@ -47,15 +55,130 @@ private: 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(); - int addFastFind(cUPnPClassObject* Object, const char* FastFind); - cUPnPClassObject* getObjectByFastFind(const char* FastFind); - cUPnPClassObject* getObjectByID(cUPnPObjectID ID); - int browse(OUT cUPnPResultSet** Results, IN const char* ID, IN bool BrowseMetadata, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); - int search(OUT cUPnPResultSet** Results, IN const char* ID, IN const char* Search, IN const char* Filter = "*", IN unsigned int Offset = 0, IN unsigned int Count = 0, IN const char* SortCriteria = ""); + /** + * 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/database/object.cpp b/database/object.cpp index 94d9415..f6875f9 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -150,7 +150,7 @@ void cUPnPClassObject::clearSortCriteria(){ } int cUPnPClassObject::setID(cUPnPObjectID ID){ - MESSAGE("Set ID from %s to %s", *this->getID(),*ID); + MESSAGE(VERBOSE_MODIFICATIONS, "Set ID from %s to %s", *this->getID(),*ID); if((int)ID < 0){ ERROR("Invalid object ID '%s'",*ID); return -1; @@ -162,7 +162,7 @@ int cUPnPClassObject::setID(cUPnPObjectID ID){ int cUPnPClassObject::setParent(cUPnPClassContainer* Parent){ if(Parent==NULL){ - MESSAGE("Object '%s' elected as root object", *this->getID()); + MESSAGE(VERBOSE_MODIFICATIONS, "Object '%s' elected as root object", *this->getID()); } // unregister from old parent if(this->mParent && Parent != this->mParent){ @@ -316,7 +316,7 @@ bool cUPnPClassObject::setProperty(const char* Property, const char* Value){ } int cUPnPClassObject::addResource(cUPnPResource* Resource){ - MESSAGE("Adding resource #%d", Resource->getID()); + MESSAGE(VERBOSE_MODIFICATIONS, "Adding resource #%d", Resource->getID()); if(!Resource){ ERROR("No resource"); return -1; @@ -374,10 +374,10 @@ bool cUPnPClassItem::setProperty(const char* Property, const char* Value){ IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ this->mDIDLFragment = Document; - MESSAGE("==(%s)= %s =====", *this->getID(), this->getTitle()); - MESSAGE("ParentID: %s", *this->getParentID()); - MESSAGE("Restricted: %s", this->isRestricted()?"1":"0"); - MESSAGE("Class: %s", this->getClass()); + MESSAGE(VERBOSE_DIDL, "==(%s)= %s =====", *this->getID(), this->getTitle()); + MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); + MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); + MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); @@ -404,13 +404,13 @@ IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringLi // if(Filter==NULL || Filter->Find(UPNP_PROP_REFERENCEID)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_REFERENCEID, *this->getReferenceID()); for(cUPnPResource* Resource = this->getResources()->First(); Resource; Resource = this->getResources()->Next(Resource)){ - MESSAGE("Resource: %s", Resource->getResource()); - MESSAGE("Protocolinfo: %s", Resource->getProtocolInfo()); + MESSAGE(VERBOSE_DIDL, "Resource: %s", Resource->getResource()); + MESSAGE(VERBOSE_DIDL, "Protocolinfo: %s", Resource->getProtocolInfo()); cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); cString ResourceURL = cString::sprintf("%s%s/get?resId=%d", *URLBase, UPNP_DIR_SHARES, Resource->getID()); - MESSAGE("Resource-URI: %s", *ResourceURL); + MESSAGE(VERBOSE_DIDL, "Resource-URI: %s", *ResourceURL); IXML_Element* eRes = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_RESOURCE); IXML_Node* Res = ixmlDocument_createTextNode(this->mDIDLFragment, *ResourceURL); @@ -451,10 +451,10 @@ cUPnPClassContainer::~cUPnPClassContainer(){ IXML_Node* cUPnPClassContainer::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ this->mDIDLFragment = Document; - MESSAGE("===(%s)= %s =====", *this->getID(), this->getTitle()); - MESSAGE("ParentID: %s", *this->getParentID()); - MESSAGE("Restricted: %s", this->isRestricted()?"1":"0"); - MESSAGE("Class: %s", this->getClass()); + MESSAGE(VERBOSE_DIDL, "===(%s)= %s =====", *this->getID(), this->getTitle()); + MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); + MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); + MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "container"); @@ -521,7 +521,7 @@ bool cUPnPClassContainer::getProperty(const char* Property, char** Value) const } void cUPnPClassContainer::addObject(cUPnPClassObject* Object){ - MESSAGE("Adding object (ID:%s) to container (ID:%s)", *Object->getID(), *this->getID()); + MESSAGE(VERBOSE_MODIFICATIONS, "Adding object (ID:%s) to container (ID:%s)", *Object->getID(), *this->getID()); Object->setParent(this); this->mChildren->Add(Object); this->mChildrenID->Add(Object, (unsigned int)Object->getID()); @@ -531,11 +531,11 @@ void cUPnPClassContainer::removeObject(cUPnPClassObject* Object){ this->mChildrenID->Del(Object, (unsigned int)Object->getID()); this->mChildren->Del(Object, false); Object->mParent = NULL; - MESSAGE("Removed object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); + MESSAGE(VERBOSE_MODIFICATIONS, "Removed object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); } cUPnPClassObject* cUPnPClassContainer::getObject(cUPnPObjectID ID) const { - MESSAGE("Getting object (ID:%s)", *ID); + MESSAGE(VERBOSE_METADATA, "Getting object (ID:%s)", *ID); if((int)ID < 0){ ERROR("Invalid object ID"); return NULL; @@ -1011,9 +1011,9 @@ void cUPnPObjectFactory::registerMediator(const char* UPnPClass, cMediatorInterf ERROR("Mediator is undefined"); return; } - MESSAGE("Registering mediator for class '%s'", UPnPClass); + MESSAGE(VERBOSE_SDK, "Registering mediator for class '%s'", UPnPClass); this->mMediators[UPnPClass] = Mediator; - MESSAGE("Now %d mediators registered", this->mMediators.size()); + MESSAGE(VERBOSE_SDK, "Now %d mediators registered", this->mMediators.size()); return; } @@ -1027,10 +1027,10 @@ void cUPnPObjectFactory::unregisterMediator(const char* UPnPClass, bool freeMedi ERROR("No such mediator found for class '%s'", UPnPClass); return; } - MESSAGE("Unregistering mediator for class '%s'", UPnPClass); + MESSAGE(VERBOSE_SDK, "Unregistering mediator for class '%s'", UPnPClass); this->mMediators.erase(MediatorIterator); if(freeMediator) delete MediatorIterator->second; - MESSAGE("Now %d mediators registered", this->mMediators.size()); + MESSAGE(VERBOSE_SDK, "Now %d mediators registered", this->mMediators.size()); return; } @@ -1057,7 +1057,7 @@ cMediatorInterface* cUPnPObjectFactory::findMediatorByID(cUPnPObjectID ID){ cMediatorInterface* cUPnPObjectFactory::findMediatorByClass(const char* Class){ if(!Class){ ERROR("No class specified"); return NULL; } - MESSAGE("Searching for mediator '%s' in %d mediators", Class, this->mMediators.size()); + MESSAGE(VERBOSE_SQL, "Searching for mediator '%s' in %d mediators", Class, this->mMediators.size()); tMediatorMap::iterator MediatorIterator = this->mMediators.find(Class); if(MediatorIterator==this->mMediators.end()){ ERROR("No matching mediator for class '%s'",Class); @@ -1212,7 +1212,7 @@ cUPnPClassObject* cUPnPObjectMediator::getObject(cUPnPObjectID){ WARNING("Gettin cUPnPClassObject* cUPnPObjectMediator::createObject(const char*, bool){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ - MESSAGE("Updating object #%s", *Object->getID()); + MESSAGE(VERBOSE_MODIFICATIONS, "Updating object #%s", *Object->getID()); cString Format = "UPDATE %s SET %s WHERE %s='%s'"; //cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; cString Set=NULL; @@ -1261,41 +1261,47 @@ int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectI } while(Row->fetchColumn(&Column, &Value)){ if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ - if(Object->setID(atoi(Value))){ + if(!*Value || Object->setID(atoi(Value))){ ERROR("Error while setting object ID"); return -1; } this->mMediaDatabase->cacheObject(Object); } else if(!strcasecmp(Column, SQLITE_COL_PARENTID)){ - cUPnPObjectID RefID = atoi(Value); - cUPnPClassContainer* ParentObject; - if(RefID == -1){ - ParentObject = NULL; + if(*Value){ + cUPnPObjectID RefID = atoi(Value); + cUPnPClassContainer* ParentObject; + if(RefID == -1){ + ParentObject = NULL; + } + else { + ParentObject = (cUPnPClassContainer*)this->mMediaDatabase->getObjectByID(RefID); + if(!ParentObject){ + ERROR("No such parent with ID '%s' found.",*RefID); + return -1; + } + } + Object->setParent(ParentObject); } else { - ParentObject = (cUPnPClassContainer*)this->mMediaDatabase->getObjectByID(RefID); - if(!ParentObject){ - ERROR("No such parent with ID '%s' found.",*RefID); - return -1; - } + ERROR("Invalid parent ID"); + return -1; } - Object->setParent(ParentObject); } else if(!strcasecmp(Column, SQLITE_COL_CLASS)){ - if(Object->setClass(Value)){ + if(!*Value || Object->setClass(Value)){ ERROR("Error while setting class"); return -1; } } else if(!strcasecmp(Column, SQLITE_COL_TITLE)){ - if(Object->setTitle(Value)){ + if(!*Value || Object->setTitle(Value)){ ERROR("Error while setting title"); return -1; } } else if(!strcasecmp(Column, SQLITE_COL_RESTRICTED)){ - if(Object->setRestricted(atoi(Value)==1?true:false)){ + if(!*Value || Object->setRestricted(atoi(Value)==1?true:false)){ ERROR("Error while setting restriction"); return -1; } @@ -1307,7 +1313,7 @@ int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectI } } else if(!strcasecmp(Column, SQLITE_COL_WRITESTATUS)){ - if(Object->setWriteStatus(atoi(Value))){ + if(*Value && Object->setWriteStatus(atoi(Value))){ ERROR("Error while setting write status"); return -1; } @@ -1369,7 +1375,7 @@ int cUPnPItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID } Rows = this->mDatabase->getResultRows(); if(!Rows->fetchRow(&Row)){ - MESSAGE("No item properties found"); + MESSAGE(VERBOSE_SQL, "No item properties found"); return 0; } while(Row->fetchColumn(&Column, &Value)){ @@ -1393,14 +1399,14 @@ int cUPnPItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID } cUPnPClassItem* cUPnPItemMediator::getObject(cUPnPObjectID ID){ - MESSAGE("Getting Item with ID '%s'",*ID); + MESSAGE(VERBOSE_METADATA, "Getting Item with ID '%s'",*ID); cUPnPClassItem* Object = new cUPnPClassItem; if(this->databaseToObject(Object, ID)) return NULL; return Object; } cUPnPClassItem* cUPnPItemMediator::createObject(const char* Title, bool Restricted){ - MESSAGE("Creating Item '%s'",Title); + MESSAGE(VERBOSE_MODIFICATIONS, "Creating Item '%s'",Title); cUPnPClassItem* Object = new cUPnPClassItem; if(this->initializeObject(Object, UPNP_CLASS_ITEM, Title, Restricted)) return NULL; return Object; @@ -1468,7 +1474,7 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } Rows = this->mDatabase->getResultRows(); if(!Rows->fetchRow(&Row)){ - MESSAGE("No item properties found"); + MESSAGE(VERBOSE_SQL, "No item properties found"); return 0; } while(Row->fetchColumn(&Column, &Value)){ @@ -1532,14 +1538,14 @@ int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } cUPnPClassContainer* cUPnPContainerMediator::createObject(const char* Title, bool Restricted){ - MESSAGE("Creating Container '%s'",Title); + MESSAGE(VERBOSE_MODIFICATIONS, "Creating Container '%s'",Title); cUPnPClassContainer* Object = new cUPnPClassContainer; if(this->initializeObject(Object, UPNP_CLASS_CONTAINER, Title, Restricted)) return NULL; return Object; } cUPnPClassContainer* cUPnPContainerMediator::getObject(cUPnPObjectID ID){ - MESSAGE("Getting Container with ID '%s'",*ID); + MESSAGE(VERBOSE_METADATA, "Getting Container with ID '%s'",*ID); cUPnPClassContainer* Object = new cUPnPClassContainer; if(this->databaseToObject(Object, ID)) return NULL; return Object; @@ -1555,14 +1561,14 @@ cUPnPVideoItemMediator::cUPnPVideoItemMediator(cMediaDatabase* MediaDatabase) : cUPnPItemMediator(MediaDatabase){} cUPnPClassVideoItem* cUPnPVideoItemMediator::createObject(const char* Title, bool Restricted){ - MESSAGE("Creating Video item '%s'",Title); + MESSAGE(VERBOSE_MODIFICATIONS, "Creating Video item '%s'",Title); cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; if(this->initializeObject(Object, UPNP_CLASS_VIDEO, Title, Restricted)) return NULL; return Object; } cUPnPClassVideoItem* cUPnPVideoItemMediator::getObject(cUPnPObjectID ID){ - MESSAGE("Getting Video item with ID '%s'",*ID); + MESSAGE(VERBOSE_METADATA, "Getting Video item with ID '%s'",*ID); cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; if(this->databaseToObject(Object, ID)) return NULL; return Object; @@ -1618,7 +1624,7 @@ int cUPnPVideoItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObje } Rows = this->mDatabase->getResultRows(); if(!Rows->fetchRow(&Row)){ - MESSAGE("No item properties found"); + MESSAGE(VERBOSE_SQL, "No item properties found"); return 0; } while(Row->fetchColumn(&Column, &Value)){ @@ -1696,14 +1702,14 @@ cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator(cMediaDatabase* MediaDa cUPnPVideoItemMediator(MediaDatabase){} cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::createObject(const char* Title, bool Restricted){ - MESSAGE("Creating Video broadcast '%s'",Title); + MESSAGE(VERBOSE_MODIFICATIONS, "Creating Video broadcast '%s'",Title); cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; if(this->initializeObject(Object, UPNP_CLASS_VIDEOBC, Title, Restricted)) return NULL; return Object; } cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::getObject(cUPnPObjectID ID){ - MESSAGE("Getting Video broadcast with ID '%s'",*ID); + MESSAGE(VERBOSE_METADATA, "Getting Video broadcast with ID '%s'",*ID); cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; if(this->databaseToObject(Object, ID)) return NULL; return Object; @@ -1753,7 +1759,7 @@ int cUPnPVideoBroadcastMediator::databaseToObject(cUPnPClassObject* Object, cUPn } Rows = this->mDatabase->getResultRows(); if(!Rows->fetchRow(&Row)){ - MESSAGE("No item properties found"); + MESSAGE(VERBOSE_SQL, "No item properties found"); return 0; } while(Row->fetchColumn(&Column, &Value)){ @@ -1795,14 +1801,14 @@ cUPnPMovieMediator::cUPnPMovieMediator(cMediaDatabase* MediaDatabase) : cUPnPVideoItemMediator(MediaDatabase){} cUPnPClassMovie* cUPnPMovieMediator::createObject(const char* Title, bool Restricted){ - MESSAGE("Creating movie '%s'",Title); + MESSAGE(VERBOSE_MODIFICATIONS, "Creating movie '%s'",Title); cUPnPClassMovie* Object = new cUPnPClassMovie; if(this->initializeObject(Object, UPNP_CLASS_MOVIE, Title, Restricted)) return NULL; return Object; } cUPnPClassMovie* cUPnPMovieMediator::getObject(cUPnPObjectID ID){ - MESSAGE("Getting movie with ID '%s'",*ID); + MESSAGE(VERBOSE_METADATA, "Getting movie with ID '%s'",*ID); cUPnPClassMovie* Object = new cUPnPClassMovie; if(this->databaseToObject(Object, ID)) return NULL; return Object; @@ -1850,7 +1856,7 @@ int cUPnPMovieMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID } Rows = this->mDatabase->getResultRows(); if(!Rows->fetchRow(&Row)){ - MESSAGE("No item properties found"); + MESSAGE(VERBOSE_SQL, "No item properties found"); return 0; } while(Row->fetchColumn(&Column, &Value)){ diff --git a/database/object.h b/database/object.h index a38098d..245a617 100644 --- a/database/object.h +++ b/database/object.h @@ -17,37 +17,112 @@ #include #include +/** + * UPnP Object ID + * + * This is a UPnP Object ID representation. + */ struct cUPnPObjectID { - int _ID; + int _ID; ///< The UPnP Object ID + /** + * Constructor + * + * Creates invalid ID + */ cUPnPObjectID():_ID(-1){} - cUPnPObjectID(long ID){ _ID = (int)ID; } - cUPnPObjectID(int ID){ _ID = ID; } - cUPnPObjectID &operator=(long ID){ _ID = ID; return *this; } - cUPnPObjectID &operator=(int ID){ _ID = ID; return *this; } - cUPnPObjectID &operator=(const cUPnPObjectID& ID){ if(this != &ID){ _ID = ID._ID; } return *this; } + /** + * 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; } - bool operator!=(long ID){ return _ID != ID; } - bool operator==(long ID){ return _ID == ID; } - bool operator!=(int ID){ return _ID != ID; } - bool operator==(int ID){ return _ID == ID; } - bool operator!=(const cUPnPObjectID& ID){ return *this == ID; } - bool operator==(const cUPnPObjectID& ID){ return *this == ID; } + /** 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; - bool includeDerived; + 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); } }; +/** + * UPnP Resource + * + * This contains all details about a resource + */ class cUPnPResource : public cListObject { friend class cUPnPResourceMediator; friend class cUPnPResources; @@ -70,21 +145,137 @@ private: 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 size + * + * Returns the resource size or -1 if its unknown + * + * @return the resource size or -1 if unknown + */ unsigned long getSize() const { return this->mSize; } + /** + * 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; + /** + * 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; } }; @@ -93,79 +284,398 @@ class cUPnPObjectMediator; class cUPnPContainerMediator; class cUPnPClassContainer; +/** + * 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 { public: cUPnPObjects(); virtual ~cUPnPObjects(); - void SortBy(const char* Property, bool Descending = false); + /** + * 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 + bool mDeleted; // is this Objected marked as deleted, NOT used yet. protected: - time_t mLastModified; - cUPnPObjectID mID; // The object ID - cUPnPClassObject* mParent; - 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* mResources; // The resources of this object - cHash* mResourcesID; - IXML_Document* mDIDLFragment; - cString mSortCriteria; - bool mSortDescending; + 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* mResources; ///< The resources of this object + cHash* 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* 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* 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; + cUPnPClassItem* mReference; ///< The reference item + /** + * Constructor of an item + * + * This creates a new instance of an item + */ cUPnPClassItem(); public: virtual ~cUPnPClassItem(){}; @@ -174,28 +684,78 @@ public: 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 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; - tClassVector mSearchClasses; - tClassVector mCreateClasses; - bool mSearchable; - unsigned int mUpdateID; - cUPnPObjects* mChildren; - cHash* mChildrenID; + 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* 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(); @@ -204,44 +764,231 @@ public: 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 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 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* 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* 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 - 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 + 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(); @@ -250,36 +997,230 @@ public: 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; - cString mStorageMedium; + 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(); @@ -288,22 +1229,75 @@ public: 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; - cString mRegion; - int mChannelNr; - cString mChannelName; + 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(); @@ -312,29 +1306,166 @@ public: 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 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; @@ -344,84 +1475,257 @@ private: 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; - cMediaDatabase* mMediaDatabase; - cUPnPObjectMediator(cMediaDatabase* MediaDatabase); - virtual int initializeObject(cUPnPClassObject* Object, const char* Class, const char* Title, bool Restricted); + 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); - virtual cUPnPClassObject* getObject(cUPnPObjectID); + /*! @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); diff --git a/database/resources.cpp b/database/resources.cpp index 7d01ceb..8f0dec4 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -75,11 +75,11 @@ int cUPnPResources::getResourcesOfObject(cUPnPClassObject* Object){ cUPnPResource* cUPnPResources::getResource(unsigned int ResourceID){ cUPnPResource* Resource; if((Resource = this->mResources->Get(ResourceID))){ - MESSAGE("Found cached resource"); + MESSAGE(VERBOSE_METADATA, "Found cached resource"); return Resource; } else if((Resource = this->mMediator->getResource(ResourceID))){ - MESSAGE("Found resource in database"); + MESSAGE(VERBOSE_METADATA, "Found resource in database"); this->mResources->Add(Resource, ResourceID); return Resource; } @@ -107,12 +107,12 @@ int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* } delete Detector; - MESSAGE("To be continued, may it work with DLNA?! Guess, not!"); + MESSAGE(VERBOSE_SDK, "To be continued, may it work with DLNA?! Guess, not!"); return 0; } int cUPnPResources::createFromFile(cUPnPClassItem* , cString ){ - MESSAGE("To be done"); + MESSAGE(VERBOSE_SDK, "To be done"); return -1; } @@ -131,12 +131,12 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Profile); - MESSAGE("Protocol info: %s", ProtocolInfo); + MESSAGE(VERBOSE_METADATA, "Protocol info: %s", ProtocolInfo); // Adapted from streamdev int index = 0; for(int i=0; Channel->Apid(i)!=0; i++, index++){ - MESSAGE("Analog channel %d", i); + MESSAGE(VERBOSE_METADATA, "Analog channel %d", i); cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); Resource->mBitrate = 0; @@ -153,7 +153,7 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel this->mResources->Add(Resource, Resource->getID()); } for(int i=0; Channel->Dpid(i)!=0; i++, index++){ - MESSAGE("Digital channel %d", i); + MESSAGE(VERBOSE_METADATA, "Digital channel %d", i); cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); Resource->mBitrate = 0; diff --git a/database/resources.h b/database/resources.h index 46ec0d5..8f7fa86 100644 --- a/database/resources.h +++ b/database/resources.h @@ -16,6 +16,12 @@ class cUPnPResourceMediator; class cMediaDatabase; +/** + * 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* mResources; @@ -24,16 +30,89 @@ private: 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: @@ -42,8 +121,40 @@ private: 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(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); }; diff --git a/misc/avdetector.cpp b/misc/avdetector.cpp index d66988e..8f3bc8f 100644 --- a/misc/avdetector.cpp +++ b/misc/avdetector.cpp @@ -55,7 +55,7 @@ int cAudioVideoDetector::detectVideoProperties(cUPnPResource* Resource, const ch unsigned int bitrate = CodecCtx->bit_rate; const char* codecName = (Codec)?Codec->name:"unknown"; - MESSAGE("AVDetector: %s-stream %dx%d at %d bit/s", codecName, width, height, bitrate); + MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream %dx%d at %d bit/s", codecName, width, height, bitrate); Resource->mBitrate = bitrate; Resource->mSampleFrequency = CodecCtx->sample_rate; diff --git a/misc/avdetector.h b/misc/avdetector.h index 0b8bb81..b043c59 100644 --- a/misc/avdetector.h +++ b/misc/avdetector.h @@ -10,10 +10,29 @@ #include "../database/object.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 { public: cAudioVideoDetector(){}; virtual ~cAudioVideoDetector(){}; + /** + * Detect video properties + * + * This detects video properties of a video stream and stores them in the + * Resource object. + * + * @param Resource the resource, where to save the data + * @param Filename the file, which shall be read + * @return returns + * - \bc 0, if the detection was successful + * - \bc <0, otherwise + */ int detectVideoProperties(cUPnPResource* Resource, const char* Filename); private: }; diff --git a/misc/config.cpp b/misc/config.cpp index 59bf4a6..1fa0ccb 100644 --- a/misc/config.cpp +++ b/misc/config.cpp @@ -32,6 +32,7 @@ cUPnPConfig* cUPnPConfig::get(){ } cUPnPConfig* cUPnPConfig::mInstance = NULL; +int cUPnPConfig::verbosity = 0; bool cUPnPConfig::processArgs(int argc, char* argv[]){ // Implement command line argument processing here if applicable. @@ -39,7 +40,9 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ {"int", required_argument, NULL, 'i'}, {"address", required_argument, NULL, 'a'}, {"port", required_argument, NULL, 'p'}, - {"autodetect", no_argument, NULL, 'd'} + {"autodetect", no_argument, NULL, 'd'}, + {"verbose", no_argument, NULL, 'v'}, + {0, 0, 0, 0} }; int c = 0; @@ -55,8 +58,9 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ bool success = true; bool ifaceExcistent = false; bool addExcistent = false; + static int verbose = 0; - while((c = getopt_long(argc, argv, "i:a:p:v",long_options, NULL)) != -1){ + while((c = getopt_long(argc, argv, "i:a:p:dv",long_options, NULL)) != -1){ switch(c){ case 'i': if(addExcistent) { ERROR("Address given but must be absent!"); return false; } @@ -78,6 +82,12 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ break; case 'd': success = this->parseSetup(SETUP_SERVER_AUTO, optarg) && success; + break; + case 'v': + cUPnPConfig::verbosity++; + verbose++; + WARNING("Verbosity level: %i ", verbose); + break; default: return false; } @@ -90,11 +100,11 @@ bool cUPnPConfig::parseSetup(const char *Name, const char *Value) { const char* ptr; if(*this->mParsedArgs && (ptr = strstr(this->mParsedArgs,Name))!=NULL){ - MESSAGE("Skipping %s=%s, was overridden in command line.",Name, Value); + MESSAGE(VERBOSE_SDK, "Skipping %s=%s, was overridden in command line.",Name, Value); return true; } - MESSAGE("VARIABLE %s has value %s", Name, Value); + MESSAGE(VERBOSE_SDK, "VARIABLE %s has value %s", Name, Value); // Parse your own setup parameters and store their values. if (!strcasecmp(Name, SETUP_SERVER_ENABLED)) this->mEnable = atoi(Value); else if (!strcasecmp(Name, SETUP_SERVER_AUTO)) this->mAutoSetup = atoi(Value); diff --git a/misc/config.h b/misc/config.h index 018213e..40ae6f7 100644 --- a/misc/config.h +++ b/misc/config.h @@ -11,21 +11,60 @@ #include #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: - char* mInterface; - char* mAddress; - int mPort; - int mEnable; - int mAutoSetup; + 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 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[]); }; diff --git a/misc/menusetup.cpp b/misc/menusetup.cpp index 9e8386f..c385b2d 100644 --- a/misc/menusetup.cpp +++ b/misc/menusetup.cpp @@ -18,7 +18,7 @@ cMenuSetupUPnP::cMenuSetupUPnP(){ // Get server acitve state - MESSAGE("Creating menu"); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Creating menu"); this->mCtrlBind = NULL; this->mCtrlAutoMode = NULL; this->mCtrlEnabled = NULL; @@ -63,7 +63,7 @@ const char* const* cMenuSetupUPnP::getInterfaceList(int* count){ } int cMenuSetupUPnP::getInterfaceIndex(const char* Interface){ - MESSAGE("Getting Index of %s", Interface); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Getting Index of %s", Interface); if(!Interface) return 0; int count; int Index = 0; diff --git a/misc/menusetup.h b/misc/menusetup.h index ae40e97..4e32efc 100644 --- a/misc/menusetup.h +++ b/misc/menusetup.h @@ -17,17 +17,42 @@ * * This class shows and manages the settings within the VDR setup OSD * - * @author Denis Loh - * @version 0.0.1 */ class cMenuSetupUPnP : public cMenuSetupPage { public: cMenuSetupUPnP(); // virtual ~cMenuSetupUPnP(); - virtual eOSState ProcessKey(eKeys Key); + /** + * 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); diff --git a/misc/search.cpp b/misc/search.cpp index deee8b0..b3534f1 100644 --- a/misc/search.cpp +++ b/misc/search.cpp @@ -28,6 +28,7 @@ typedef function1 charCallback; typedef function1 intCallback; // The defined ColumnNames +/** @private */ struct cProperties : symbols { //struct cProperties : symbols<> { cProperties(){ @@ -107,6 +108,7 @@ struct cProperties : symbols { } } Properties; +/** @private */ struct cOperators : symbols { cOperators(){ add @@ -123,6 +125,7 @@ struct cOperators : symbols { } } Operators; +/** @private */ struct cConcatOperators : symbols { cConcatOperators(){ add @@ -132,6 +135,7 @@ struct cConcatOperators : symbols { } } ConcatOperators; +/** @private */ struct cExistanceOperator : symbols { cExistanceOperator(){ add @@ -145,6 +149,7 @@ struct cExistanceOperator : symbols { // This is the grammar including the functors which calls the member functions // of search. The callback definitions at the end of the constructor are // essential. DO NOT MODIFY if you don't know how! +/** @private */ struct cSearchGrammar : public boost::spirit::grammar { // The callbacks members charCallback &endBrackedExp; @@ -176,6 +181,7 @@ struct cSearchGrammar : public boost::spirit::grammar { startBrackedExp(startBrackedExp){} template + /** @private */ struct definition { boost::spirit::rule searchCrit, searchExp, logOp, \ relExp, binOp, relOp, stringOp, \ @@ -278,6 +284,7 @@ struct cSearchGrammar : public boost::spirit::grammar { }; }; +/** @private */ struct cSortGrammar : public boost::spirit::grammar { // The callback members propCallback &pushProperty; @@ -290,6 +297,7 @@ struct cSortGrammar : public boost::spirit::grammar { pushDirection(pushDirection){} template + /** @private */ struct definition { boost::spirit::rule sortCrit, sortExp, property, direction; @@ -312,6 +320,7 @@ struct cSortGrammar : public boost::spirit::grammar { }; }; +/** @private */ struct cFilterGrammar : public boost::spirit::grammar { // The callback members propCallback &pushProperty; @@ -324,6 +333,7 @@ struct cFilterGrammar : public boost::spirit::grammar { pushAsterisk(pushAsterisk){} template + /** @private */ struct definition { boost::spirit::rule filterCrit, filterExp, property; @@ -351,7 +361,7 @@ struct cFilterGrammar : public boost::spirit::grammar { \**********************************************/ void cSearch::pushEndBrackedExp(const char){ - MESSAGE("Pushing closing bracket"); + MESSAGE(VERBOSE_PARSERS, "Pushing closing bracket"); if(asprintf(&this->SQLWhereStmt, "%s)", this->SQLWhereStmt)==-1){ ERROR("Unable to allocate SQL Statement"); return; @@ -369,21 +379,21 @@ void cSearch::pushExpression(const char*, const char*){ long int IntegerValue; if(sscanf(Value, "%ld", &IntegerValue)!=EOF && sscanf(Value, "%*4d-%*2d-%*2d")==EOF){ - MESSAGE("Popping '%s %s %ld'",Property, Operator, IntegerValue); + MESSAGE(VERBOSE_PARSERS, "Popping '%s %s %ld'",Property, Operator, IntegerValue); if(asprintf(&Statement, "%s %s %ld", Property, Operator, IntegerValue)==-1){ ERROR("Failed to allocated memory for statement."); return; } } else if(!strcasecmp(Operator, "IS")){ - MESSAGE("Popping '%s %s %s'", Property, Operator, Value); + MESSAGE(VERBOSE_PARSERS, "Popping '%s %s %s'", Property, Operator, Value); if(asprintf(&Statement, "%s %s %s", Property, Operator, Value)==-1){ ERROR("Failed to allocated memory for statement."); return; } } else { - MESSAGE("Popping '%s %s \"%s\"'",Property, Operator, Value); + MESSAGE(VERBOSE_PARSERS, "Popping '%s %s \"%s\"'",Property, Operator, Value); if(asprintf(&Statement, "%s %s '%s'", Property, Operator, Value)==-1){ ERROR("Failed to allocated memory for statement."); return; @@ -401,12 +411,12 @@ void cSearch::pushExpression(const char*, const char*){ void cSearch::pushProperty(const char* Property){ this->CurrentProperty = strdup(Property); - MESSAGE("Property %s added",Property); + MESSAGE(VERBOSE_PARSERS, "Property %s added",Property); } void cSearch::pushOperator(const char* Operator){ this->CurrentOperator = strdup(Operator); - MESSAGE("Operator %s added",Operator); + MESSAGE(VERBOSE_PARSERS, "Operator %s added",Operator); } void cSearch::pushValue(const char* Start, const char* End){ @@ -414,13 +424,13 @@ void cSearch::pushValue(const char* Start, const char* End){ if(!Value || !strcmp(Value,"")) return; this->CurrentValue = strdup(Value); - MESSAGE("Value %s added", Value); + MESSAGE(VERBOSE_PARSERS, "Value %s added", Value); } void cSearch::pushExistance(const char* Exists){ this->CurrentValue = strdup(Exists); this->CurrentOperator = strdup("IS"); - MESSAGE("Existance expression called. '%s'", Exists); + MESSAGE(VERBOSE_PARSERS, "Existance expression called. '%s'", Exists); } void cSearch::pushConcatOp(const char* Operator){ @@ -429,11 +439,11 @@ void cSearch::pushConcatOp(const char* Operator){ return; } - MESSAGE("Concatenation expression called. '%s'", Operator); + MESSAGE(VERBOSE_PARSERS, "Concatenation expression called. '%s'", Operator); } void cSearch::pushStartBrackedExp(const char){ - MESSAGE("Pushing opening bracket"); + MESSAGE(VERBOSE_PARSERS, "Pushing opening bracket"); if(asprintf(&this->SQLWhereStmt, "%s(", this->SQLWhereStmt)==-1){ ERROR("Unable to allocate SQL Statement"); return; @@ -478,13 +488,13 @@ bool cSearch::parseCriteria(const char* Search){ pushConcatOpCB, startBrackedExpCB); - MESSAGE("Starting search parsing"); + MESSAGE(VERBOSE_PARSERS, "Starting search parsing"); if(boost::spirit::parse(Search, Grammar).full){ - MESSAGE("Parsing successful"); + MESSAGE(VERBOSE_DIDL, "Parsed search expression successfuly"); } else { - ERROR("Parsing failed"); + ERROR("Parsing search expression failed"); return false; } return true; @@ -532,7 +542,7 @@ bool cFilterCriteria::parseFilter(const char* Filter){ this->mFilterList = new cStringList; if(Filter && !strcasecmp(Filter, "")){ - MESSAGE("Empty filter"); + MESSAGE(VERBOSE_PARSERS, "Empty filter"); return true; } @@ -542,7 +552,7 @@ bool cFilterCriteria::parseFilter(const char* Filter){ cFilterGrammar Grammar(pushPropertyCB, pushAsteriskCB); if(boost::spirit::parse(Filter, Grammar).full){ - MESSAGE("Parse filter successful"); + MESSAGE(VERBOSE_PARSERS, "Parse filter successful"); } else { ERROR("Parsing filter failed"); @@ -558,12 +568,12 @@ bool cFilterCriteria::parseFilter(const char* Filter){ \**********************************************/ void cFilterCriteria::pushProperty(const char* Property){ - MESSAGE("Pushing property"); + MESSAGE(VERBOSE_PARSERS, "Pushing property"); this->mFilterList->Append(strdup(Property)); } void cFilterCriteria::pushAsterisk(const char){ - MESSAGE("Pushing asterisk (*)"); + MESSAGE(VERBOSE_PARSERS, "Pushing asterisk (*)"); if(this->mFilterList) delete this->mFilterList; this->mFilterList = NULL; return; @@ -596,7 +606,7 @@ cList* cSortCriteria::parse(const char* Sort){ bool cSortCriteria::parseSort(const char* Sort){ if(!Sort || !strcasecmp(Sort, "")){ - MESSAGE("Empty Sort"); + MESSAGE(VERBOSE_PARSERS, "Empty Sort"); return true; } @@ -606,7 +616,7 @@ bool cSortCriteria::parseSort(const char* Sort){ cSortGrammar Grammar(pushPropertyCB, pushDirectionCB); if(boost::spirit::parse(Sort, Grammar).full){ - MESSAGE("Parse Sort successful"); + MESSAGE(VERBOSE_PARSERS, "Parse Sort successful"); } else { ERROR("Parsing Sort failed"); @@ -622,14 +632,14 @@ bool cSortCriteria::parseSort(const char* Sort){ \**********************************************/ void cSortCriteria::pushProperty(const char* Property){ - MESSAGE("Pushing property '%s'", Property); + MESSAGE(VERBOSE_PARSERS, "Pushing property '%s'", Property); this->mCurrentCrit->Property = strdup(Property); this->mCriteriaList->Add(this->mCurrentCrit); return; } void cSortCriteria::pushDirection(const char Direction){ - MESSAGE("Pushing direction '%c'", Direction); + MESSAGE(VERBOSE_PARSERS, "Pushing direction '%c'", Direction); this->mCurrentCrit = new cSortCrit; this->mCurrentCrit->SortDescending = (Direction=='-')?true:false; return; @@ -641,6 +651,7 @@ void cSortCriteria::pushDirection(const char Direction){ * * \**********************************************/ +/** @private */ struct cWebserverSections : symbols<> { cWebserverSections(){ add @@ -649,6 +660,7 @@ struct cWebserverSections : symbols<> { } } WebserverSections; +/** @private */ struct cWebserverMethods : symbols { cWebserverMethods(){ add @@ -661,6 +673,7 @@ struct cWebserverMethods : symbols { } } WebserverMethods; +/** @private */ struct cPathParserGrammar : public boost::spirit::grammar { intCallback &pushSection; @@ -678,6 +691,7 @@ struct cPathParserGrammar : public boost::spirit::grammar { pushPropertyValue(pushPropertyValue){} template + /** @private */ struct definition { boost::spirit::rule pathExp, section, method, methodProperties, property, key, value, uncriticalChar; @@ -742,7 +756,7 @@ bool cPathParser::parsePath(const char* Path, int* Section, int* Method, propert cPathParserGrammar Grammar(pushSectionCB, pushMethodCB, pushPropertyKeyCB, pushPropertyValueCB); if(boost::spirit::parse(Path, Grammar).full){ - MESSAGE("Parse path successful"); + MESSAGE(VERBOSE_PARSERS, "Parse path successful"); *Section = this->mSection; *Method = this->mMethod; *Properties = this->mProperties; @@ -765,7 +779,7 @@ bool cPathParser::parsePath(const char* Path, int* Section, int* Method, propert void cPathParser::pushPropertyKey(const char* Start, const char* End){ char* Key = strndup(Start, End-Start); - MESSAGE("Pushing key '%s'", Key); + MESSAGE(VERBOSE_PARSERS, "Pushing key '%s'", Key); this->mKey = Key; @@ -775,7 +789,7 @@ void cPathParser::pushPropertyKey(const char* Start, const char* End){ void cPathParser::pushPropertyValue(const char* Start, const char* End){ char* Value = strndup(Start, End-Start); - MESSAGE("Pushing value '%s'", Value); + MESSAGE(VERBOSE_PARSERS, "Pushing value '%s'", Value); // TODO: urlDecode Value if(*this->mKey){ @@ -785,11 +799,11 @@ void cPathParser::pushPropertyValue(const char* Start, const char* End){ } void cPathParser::pushMethod(int Method){ - MESSAGE("Pushing method '%d'", Method); + MESSAGE(VERBOSE_PARSERS, "Pushing method '%d'", Method); this->mMethod = Method; } void cPathParser::pushSection(int Section){ - MESSAGE("Pushing section '%d'", Section); + MESSAGE(VERBOSE_PARSERS, "Pushing section '%d'", Section); this->mSection = Section; } \ No newline at end of file diff --git a/misc/search.h b/misc/search.h index df2442e..ef162b1 100644 --- a/misc/search.h +++ b/misc/search.h @@ -12,13 +12,27 @@ #include #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; - bool SortDescending; + const char* Property; ///< the Property, which shall be sorted + bool SortDescending; ///< sort the objects in descending order }; typedef std::map 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; @@ -33,9 +47,30 @@ private: cPathParser(); public: virtual ~cPathParser(); - static bool parse(const char* Path, int* Section, int* Method, propertyMap* Properties); + /** + * 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; @@ -47,9 +82,26 @@ private: cSortCriteria(); public: virtual ~cSortCriteria(); - static cList* parse(const char* Sort); + /** + * 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* 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; @@ -60,9 +112,23 @@ private: cStringList* getFilterList() const { return this->mFilterList; } public: virtual ~cFilterCriteria(); - static cStringList* parse(const char* Filter); + /** + * 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; diff --git a/misc/util.cpp b/misc/util.cpp index dc75706..8cfc524 100644 --- a/misc/util.cpp +++ b/misc/util.cpp @@ -240,25 +240,6 @@ eOSState cMenuEditIpItem::ProcessKey(eKeys Key) { return osContinue; } -const char* escapeSQLite(const char* Data, char** Buf){ - if(!Data){ - *Buf = NULL; - } - else { - std::string NewData = ""; - int Char = 0; - for(unsigned int i = 0; i < strlen(Data); i++){ - Char = Data[i]; - switch(Char){ - case L'\'': NewData += "''"; break; - default: NewData += Data[i]; break; - } - } - *Buf = strdup(NewData.c_str()); - } - return (*Buf); -} - const char* escapeXMLCharacters(const char* Data, char** Buf){ if(Data==NULL){ ERROR("Escape XML: No data to escape"); diff --git a/misc/util.h b/misc/util.h index ffedd67..6ff2a54 100644 --- a/misc/util.h +++ b/misc/util.h @@ -14,19 +14,116 @@ #ifdef __cplusplus extern "C" { -struct strCmp { bool operator()(const char* s1, const char* s2) const { return (strcmp(s1,s2) < 0); }}; +#if 0 +} +#endif +/** + * 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); +#if 0 +{ +#endif } #endif -const char* escapeSQLite(const char* Data, char** Buf); +/** + * 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; diff --git a/receiver/filehandle.h b/receiver/filehandle.h index 37f06e8..1dc57bf 100644 --- a/receiver/filehandle.h +++ b/receiver/filehandle.h @@ -11,12 +11,94 @@ #include #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: - virtual void open(UpnpOpenFileMode mode) = 0; - virtual int read(char* buf, size_t buflen) = 0; - virtual int write(char* buf, size_t buflen) = 0; - virtual int seek(off_t offset, int whence) = 0; + /** + * 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: diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 189f4a4..8ca560f 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -22,7 +22,7 @@ cLiveReceiver* cLiveReceiver::newInstance(cChannel* Channel, int Priority){ cLiveReceiver *Receiver = new cLiveReceiver(Channel, Device); if(Receiver){ - MESSAGE("Receiver for channel \"%s\" created successfully.", Channel->Name()); + MESSAGE(VERBOSE_SDK, "Receiver for channel \"%s\" created successfully.", Channel->Name()); return Receiver; } else { @@ -62,13 +62,13 @@ void cLiveReceiver::open(UpnpOpenFileMode){ void cLiveReceiver::Activate(bool On){ if(On){ this->Start(); - MESSAGE("Live receiver started."); + MESSAGE(VERBOSE_LIVE_TV, "Live receiver started."); } else { if(this->Running()){ this->Cancel(2); } - MESSAGE("Live receiver stopped"); + MESSAGE(VERBOSE_LIVE_TV, "Live receiver stopped"); } } @@ -82,20 +82,20 @@ void cLiveReceiver::Receive(uchar* Data, int Length){ } void cLiveReceiver::Action(void){ - MESSAGE("Started buffering..."); + MESSAGE(VERBOSE_LIVE_TV, "Started buffering..."); while(this->Running()){ int bytesRead; - //MESSAGE("Buffer is filled with %d bytes", this->mLiveBuffer->Available()); + MESSAGE(VERBOSE_BUFFERS, "Buffer is filled with %d bytes", this->mLiveBuffer->Available()); uchar* bytes = this->mLiveBuffer->Get(bytesRead); if(bytes){ int count = this->mFrameDetector->Analyze(bytes, bytesRead); if(count){ - //MESSAGE("%d bytes analyzed", count); - //MESSAGE("%2.2f FPS", this->mFrameDetector->FramesPerSecond()); + MESSAGE(VERBOSE_BUFFERS, "%d bytes analyzed", count); + MESSAGE(VERBOSE_BUFFERS, "%2.2f FPS", this->mFrameDetector->FramesPerSecond()); if(!this->Running() && this->mFrameDetector->IndependentFrame()) break; if(this->mFrameDetector->Synced()){ - //MESSAGE("Frame detector synced to data stream"); + MESSAGE(VERBOSE_BUFFERS, "Frame detector synced to data stream"); if(this->mFrameDetector->IndependentFrame()){ this->mOutputBuffer->Put(this->mPatPmtGenerator.GetPat(), TS_SIZE); int i = 0; @@ -107,7 +107,7 @@ void cLiveReceiver::Action(void){ if(bytesWrote != count){ this->mLiveBuffer->ReportOverflow(count - bytesWrote); } - //MESSAGE("Wrote %d to output buffer", bytesWrote); + MESSAGE(VERBOSE_BUFFERS, "Wrote %d to output buffer", bytesWrote); if(bytesWrote){ this->mLiveBuffer->Del(bytesWrote); } @@ -121,7 +121,7 @@ void cLiveReceiver::Action(void){ } } } - MESSAGE("Receiver was detached from device"); + MESSAGE(VERBOSE_LIVE_TV, "Receiver was detached from device"); } int cLiveReceiver::read(char* buf, size_t buflen){ @@ -135,7 +135,7 @@ int cLiveReceiver::read(char* buf, size_t buflen){ WARNING("Too few data, waiting..."); cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ - MESSAGE("Lost device..."); + MESSAGE(VERBOSE_LIVE_TV, "Lost device..."); return 0; } WaitTimeout-=RECEIVER_WAIT_ON_NODATA; @@ -160,7 +160,7 @@ int cLiveReceiver::read(char* buf, size_t buflen){ } } - MESSAGE("Read %d bytes from live feed", bytesRead); + MESSAGE(VERBOSE_BUFFERS, "Read %d bytes from live feed", bytesRead); return bytesRead; } @@ -175,10 +175,10 @@ int cLiveReceiver::write(char*, size_t){ } void cLiveReceiver::close(){ - MESSAGE("Closing live receiver"); + MESSAGE(VERBOSE_SDK, "Closing live receiver"); this->Detach(); delete this->mOutputBuffer; this->mOutputBuffer = NULL; delete this->mLiveBuffer; this->mLiveBuffer = NULL; this->mFrameDetector = NULL; - MESSAGE("Live receiver closed."); + MESSAGE(VERBOSE_LIVE_TV, "Live receiver closed."); } \ No newline at end of file diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h index 6b04619..92fe140 100644 --- a/receiver/livereceiver.h +++ b/receiver/livereceiver.h @@ -17,18 +17,78 @@ #define RECEIVER_WAIT_ON_NODATA 50 // 50 ms #define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s +/** + * 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: - static cLiveReceiver* newInstance(cChannel *Channel, int Priority); + /** + * 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: - virtual void Receive(uchar *Data, int Length); - virtual void Activate(bool On); + /** + * 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); diff --git a/receiver/recplayer.cpp b/receiver/recplayer.cpp index d968ae7..a9ea85b 100644 --- a/receiver/recplayer.cpp +++ b/receiver/recplayer.cpp @@ -25,7 +25,7 @@ cRecordingPlayer::~cRecordingPlayer() { } cRecordingPlayer::cRecordingPlayer(cRecording *Recording) { - MESSAGE("Created Recplayer"); + MESSAGE(VERBOSE_SDK, "Created Recplayer"); this->mFile = NULL; this->mTotalLenght = 0; this->mRecording = Recording; @@ -118,11 +118,11 @@ int cRecordingPlayer::seek(off_t offset, int origin){ } void cRecordingPlayer::Scan(){ - MESSAGE("Scanning video files..."); + MESSAGE(VERBOSE_RECORDS, "Scanning video files..."); // Reset the offsets int i = 1; while(this->mOffsets[i++]) this->mOffsets[i] = 0; - MESSAGE("Offsets reseted."); + MESSAGE(VERBOSE_RECORDS, "Offsets reseted."); i = 0; FILE *File; @@ -133,7 +133,7 @@ void cRecordingPlayer::Scan(){ } fseek(File, 0, SEEK_END); off_t offset = ftell(File); - MESSAGE("File %d has its last offset at %ld", i, offset); + MESSAGE(VERBOSE_RECORDS, "File %d has its last offset at %ld", i, offset); this->mOffsets[i+1] = this->mOffsets[i] + offset; this->mTotalLenght = this->mOffsets[i+1]; i++; @@ -150,7 +150,7 @@ FILE *cRecordingPlayer::GetFile(int Index){ if(this->mFile) fclose(this->mFile); char *filename = new char[VDR_FILENAME_BUFSIZE]; snprintf(filename, VDR_FILENAME_BUFSIZE, VDR_RECORDFILE_PATTERN_TS, this->mRecording->FileName(), Index ); - MESSAGE("Filename: %s", filename); + MESSAGE(VERBOSE_BUFFERS, "Filename: %s", filename); this->mFile = NULL; if(this->mFile = fopen(filename, "r")){ this->mIndex = Index; diff --git a/receiver/recplayer.h b/receiver/recplayer.h index 8295539..a2e69ac 100644 --- a/receiver/recplayer.h +++ b/receiver/recplayer.h @@ -12,8 +12,26 @@ #include "filehandle.h" #include +/** + * 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 : 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); diff --git a/server/server.cpp b/server/server.cpp index 03750bd..d98c78b 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -50,7 +50,7 @@ cUPnPServer::~cUPnPServer() { bool cUPnPServer::init(void){ - MESSAGE("Loading configuration..."); + MESSAGE(VERBOSE_SDK, "Loading configuration..."); cUPnPConfig* config = cUPnPConfig::get(); this->enable(config->mEnable == 1 ? true : false); if(!config->mAutoSetup){ @@ -80,7 +80,7 @@ bool cUPnPServer::init(void){ } } - MESSAGE("Initializing Intel UPnP SDK on %s:%d",inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); + MESSAGE(VERBOSE_SDK, "Initializing Intel UPnP SDK on %s:%d",inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); int ret = 0; ret = UpnpInit(inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); @@ -98,18 +98,18 @@ bool cUPnPServer::init(void){ ERROR("Unable to set IP address"); } this->mServerAddr->sin_port = htons(UpnpGetServerPort()); - MESSAGE("Initializing succesfully at %s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); + MESSAGE(VERBOSE_SDK, "Initializing succesfully at %s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); } - MESSAGE("Setting maximum packet size for SOAP requests"); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Setting maximum packet size for SOAP requests"); UpnpSetMaxContentLength(UPNP_SOAP_MAX_LEN); //set the root directory of the webserver cString WebserverRootDir = cString::sprintf("%s%s", cPluginUpnp::getConfigDirectory(), UPNP_WEB_SERVER_ROOT_DIR); - MESSAGE("Set web server root dir: %s", *WebserverRootDir ); + MESSAGE(VERBOSE_SDK, "Set web server root dir: %s", *WebserverRootDir ); this->mWebServer = cUPnPWebServer::getInstance(WebserverRootDir); - MESSAGE("Initializing web server."); + MESSAGE(VERBOSE_SDK, "Initializing web server."); if (!this->mWebServer->init()) { ERROR("Error while setting web server root dir - Errorcode: %d", ret); return false; @@ -120,7 +120,7 @@ bool cUPnPServer::init(void){ this->mDeviceDescription = cString(cDlna::getInstance()->getDeviceDescription(URLBase),true); - MESSAGE("Register Media Server Device"); + MESSAGE(VERBOSE_SDK, "Register Media Server Device"); ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, &cUPnPServer::upnpActionCallback, @@ -131,14 +131,14 @@ bool cUPnPServer::init(void){ return false; } - MESSAGE("Unregister server to cleanup previously started servers"); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Unregister server to cleanup previously started servers"); ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); if (ret != UPNP_E_SUCCESS) { WARNING("Unregistering old devices failed"); return false; } - MESSAGE("Register Media Server Device"); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Register Media Server Device"); ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, &cUPnPServer::upnpActionCallback, @@ -149,16 +149,16 @@ bool cUPnPServer::init(void){ return false; } - MESSAGE("Initializing media database"); + MESSAGE(VERBOSE_SDK, "Initializing media database"); this->mMediaDatabase = new cMediaDatabase; if(!this->mMediaDatabase->init()){ ERROR("Error while initializing database"); return false; } - MESSAGE("Initializing connection manager"); + MESSAGE(VERBOSE_SDK, "Initializing connection manager"); cUPnPServer::mConnectionManager = new cConnectionManager(this->mDeviceHandle); - MESSAGE("Initializing content directory"); + MESSAGE(VERBOSE_SDK, "Initializing content directory"); cUPnPServer::mContentDirectory = new cContentDirectory(this->mDeviceHandle, this->mMediaDatabase); if(!cUPnPServer::mContentDirectory->Start()){ ERROR("Unable to start content directory thread"); @@ -166,7 +166,7 @@ bool cUPnPServer::init(void){ } //send first advertisments - MESSAGE("Send first advertisements to publish start in network"); + MESSAGE(VERBOSE_SDK, "Send first advertisements to publish start in network"); ret = UpnpSendAdvertisement(this->mDeviceHandle, UPNP_ANNOUNCE_MAX_AGE); if (ret != UPNP_E_SUCCESS) { ERROR("Error while sending first advertisments - Errorcode: %d", ret); @@ -177,20 +177,20 @@ bool cUPnPServer::init(void){ } bool cUPnPServer::uninit(void) { - MESSAGE("Shuting down content directory"); + MESSAGE(VERBOSE_SDK, "Shuting down content directory"); delete cUPnPServer::mContentDirectory; cUPnPServer::mContentDirectory = NULL; - MESSAGE("Shuting down connection manager"); + MESSAGE(VERBOSE_SDK, "Shuting down connection manager"); delete cUPnPServer::mConnectionManager; cUPnPServer::mConnectionManager = NULL; - MESSAGE("Closing metadata database"); + MESSAGE(VERBOSE_SDK, "Closing metadata database"); delete this->mMediaDatabase; this->mMediaDatabase = NULL; - MESSAGE("Closing the web server"); + MESSAGE(VERBOSE_SDK, "Closing the web server"); this->mWebServer->uninit(); delete this->mWebServer; - MESSAGE("Close Intel SDK"); + MESSAGE(VERBOSE_SDK, "Close Intel SDK"); // unregiser media server device from UPnP SDK int ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); if (ret != UPNP_E_SUCCESS) { @@ -200,7 +200,7 @@ bool cUPnPServer::uninit(void) { ret = UpnpFinish(); if (ret == UPNP_E_SUCCESS) { - MESSAGE("Close Intel SDK Successfull"); + MESSAGE(VERBOSE_SDK, "Close Intel SDK Successfull"); return true; } else { ERROR("Intel SDK unintialized or already closed - Errorcode: %d", ret); @@ -277,7 +277,7 @@ bool cUPnPServer::autoDetectSettings(void){ char** Ifaces = getNetworkInterfaces(&count); int i=0; bool ret = false; - MESSAGE("AUTODETECT: Found %d possible interfaces.", sizeof(Ifaces)); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "AUTODETECT: Found %d possible interfaces.", sizeof(Ifaces)); while(Ifaces[i]){ if(strcmp(Ifaces[i],"lo")!=0){ // true || false == true @@ -288,7 +288,7 @@ bool cUPnPServer::autoDetectSettings(void){ } delete [] Ifaces; if(!ret){ - MESSAGE("AUTODETECT: No suitable interface. Giving up."); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "AUTODETECT: No suitable interface. Giving up."); return false; } this->setServerPort(0); @@ -299,8 +299,8 @@ bool cUPnPServer::start(void){ if(!this->isRunning()){ // Put all the stuff which shall be started with the server in here // if the startup failed due any reason return false! - MESSAGE("Starting UPnP Server on %s:%d",inet_ntoa(this->getServerAddress()->sin_addr), ntohs(this->getServerAddress()->sin_port)); - MESSAGE("Using DLNA version: %s", DLNA_PROTOCOL_VERSION_STR); + MESSAGE(VERBOSE_SDK, "Starting UPnP Server on %s:%d",inet_ntoa(this->getServerAddress()->sin_addr), ntohs(this->getServerAddress()->sin_port)); + MESSAGE(VERBOSE_SDK, "Using DLNA version: %s", DLNA_PROTOCOL_VERSION_STR); this->mIsRunning = true; // Start Media database thread this->mMediaDatabase->Start(); @@ -310,7 +310,7 @@ bool cUPnPServer::start(void){ void cUPnPServer::stop(void){ if(this->isRunning()){ - MESSAGE("Call upnpServer STOP"); + MESSAGE(VERBOSE_SDK, "Call upnpServer STOP"); this->uninit(); this->mIsRunning = false; } @@ -318,7 +318,7 @@ void cUPnPServer::stop(void){ } bool cUPnPServer::restart(void){ - MESSAGE("Call upnpServer RESTART"); + MESSAGE(VERBOSE_SDK, "Call upnpServer RESTART"); this->stop(); return this->start(); } @@ -331,11 +331,11 @@ bool cUPnPServer::setInterface(const char* Interface){ if(Interface != NULL) this->mInterface = Interface; if(*this->mInterface!=NULL){ - MESSAGE("Try to retrieve address for NIC %s",Interface); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Try to retrieve address for NIC %s",Interface); const sockaddr_in* ipAddress = getIPFromInterface(Interface); if(ipAddress!=NULL){ memcpy(&this->mServerAddr->sin_addr,&ipAddress->sin_addr,sizeof(ipAddress->sin_addr)); - MESSAGE("NIC %s has the following IP: %s", *this->mInterface, inet_ntoa(this->mServerAddr->sin_addr)); + MESSAGE(VERBOSE_CUSTOM_OUTPUT, "NIC %s has the following IP: %s", *this->mInterface, inet_ntoa(this->mServerAddr->sin_addr)); this->stop(); return true; } diff --git a/server/server.h b/server/server.h index 72ed2c8..c2a0e9a 100644 --- a/server/server.h +++ b/server/server.h @@ -20,6 +20,13 @@ #include "../upnpcomponents/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: @@ -42,7 +49,10 @@ public: * * This switch indicates if the server is startable or not * - * If it is set to FALSE, any invocation of start() will do nothing. + * 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); /** @@ -50,7 +60,9 @@ public: * * This will start the UPnP server activities as a background task. * - * @return 1 when the server started successfully, 0 otherwise + * @return returns + * - \bc true, when the server started successfully + * - \bc false, otherwise */ bool start(void); /** @@ -60,7 +72,9 @@ public: * It will stop the server functionalities, clear everything and * start it again. * - * @return 1 when the server restarted successfully, 0 otherwise + * @return returns + * - \bc true, when the server restarted successfully + * - \bc false, otherwise */ bool restart(void); /** @@ -70,6 +84,16 @@ public: * 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 @@ -82,7 +106,7 @@ public: /** * Get the interface the server listens to * - * Returns the network interface + * @return the network interface */ const char* getInterface(void) const { return this->mInterface; } /** @@ -98,13 +122,20 @@ public: * Returns 1 when the port is valid, 0 otherwise * * @param port The port of the server - * @return 1 if the new server address is set, 0 otherwise + * @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); /** @@ -115,7 +146,12 @@ public: * changes through the system. * * This method should only be used in cases of fixed IP addresses - * for example when no DHCP server is available. + * 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); /** @@ -123,6 +159,11 @@ public: * * 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); /** @@ -130,7 +171,9 @@ public: * * This indicates if the server is currently enabled. * - * @return 1 if the server is enabled, 0 otherwise + * @return returns + * - \bc true, if the server is enabled + * - \bc false, otherwise */ bool isEnabled(void) const { return this->mIsEnabled; } /** @@ -138,13 +181,19 @@ public: * * If the server is enabled, this indicates if it is running. * - * @return 1 if the server is running, 0 otherwise + * @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: diff --git a/upnp.cpp b/upnp.cpp index 0aadcf0..1f8f4e4 100644 --- a/upnp.cpp +++ b/upnp.cpp @@ -65,7 +65,14 @@ const char *cPluginUpnp::CommandLineHelp(void) " -p --port= The server port\n" " Supported ports:\n" " %5d (auto detect)\n" - " %5d-%5d (user defined)\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", 0, SERVER_MIN_PORT, SERVER_MAX_PORT @@ -81,21 +88,21 @@ bool cPluginUpnp::ProcessArgs(int argc, char *argv[]) bool cPluginUpnp::Initialize(void) { // Initialize any background activities the plugin shall perform. - MESSAGE("######### LETS GET READY TO RUMBLE #########"); + MESSAGE(VERBOSE_SDK, "######### LETS GET READY TO RUMBLE #########"); cPluginUpnp::mConfigDirectory = strdup(cPlugin::ConfigDirectory(this->Name())); if(!cPluginUpnp::getConfigDirectory()){ ERROR("Cannot set configuration directory"); return false; } - MESSAGE("Configuration directory: %s", cPluginUpnp::getConfigDirectory()); + MESSAGE(VERBOSE_SDK, "Configuration directory: %s", cPluginUpnp::getConfigDirectory()); DatabaseLocker.Signal(); return this->mUpnpServer->init(); } bool cPluginUpnp::Start(void) { - MESSAGE("Call plugin START"); + MESSAGE(VERBOSE_SDK, "Call plugin START"); // Start any background activities the plugin shall perform. return this->mUpnpServer->start(); //return true; @@ -103,7 +110,7 @@ bool cPluginUpnp::Start(void) void cPluginUpnp::Stop(void) { - MESSAGE("Call plugin STOP"); + MESSAGE(VERBOSE_SDK, "Call plugin STOP"); // Stop any background activities the plugin is performing. this->mUpnpServer->stop(); } diff --git a/upnp.h b/upnp.h index 5baa1cc..ab1b04a 100644 --- a/upnp.h +++ b/upnp.h @@ -15,6 +15,12 @@ class cUPnPServer; +/** + * 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. + */ class cPluginUpnp : public cPlugin { private: // Add any member variables or functions you may need here. @@ -23,20 +29,92 @@ private: public: cPluginUpnp(void); virtual ~cPluginUpnp(); + /** + * Get the version of the plugin + * + * Returns the version string of the plugin + * + * @return a string representation of the plugin version + */ virtual const char *Version(void); + /** + * Get the description + * + * This returns a brief description of the plugin and what it does. + * + * @return the description of the plugin + */ virtual const char *Description(void); + /** + * Get the command line help + * + * This returns the command line help output, which comes, when the user + * types \c --help into the command line. + * + * @return the command line help + */ virtual const char *CommandLineHelp(void); + /*! @copydoc cUPnPConfig::processArgs */ virtual bool ProcessArgs(int argc, char *argv[]); + /** + * Initializes the plugin + * + * This initializes any background activities of the plugin. + * + * @return returns + * - \bc true, if initializing was successful + * - \bc false, otherwise + */ virtual bool Initialize(void); + /** + * Starts the plugin + * + * This starts the plugin. It starts additional threads, which are required + * by the plugin. + * + * @return returns + * - \bc true, if starting was successful + * - \bc false, otherwise + */ virtual bool Start(void); + /** + * Stops the plugin + * + * This stops the plugin and all its components + */ virtual void Stop(void); + /** + * Message if still active + * + * This returns a message if the plugin is still active when a user attempts + * to shut down the VDR. + * + * @return the message shown on the screen. + */ virtual cString Active(void); + /** + * 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 + * + * @return the menu of the plugin + */ virtual cMenuSetupPage *SetupMenu(void); + /*! @copydoc cUPnPConfig::parseSetup */ virtual bool SetupParse(const char *Name, const char *Value); + /** + * Get the configuration directory + * + * This returns the directory, where configuration files are stored. + * + * @return the directory of the configuration files. + */ static const char* getConfigDirectory(); }; -extern cCondWait DatabaseLocker; +extern cCondWait DatabaseLocker; ///< Locks the database to be loaded only if + ///< the configuration file directory is set #endif /* _UPNP_H */ diff --git a/upnpcomponents/connectionmanager.cpp b/upnpcomponents/connectionmanager.cpp index b2c7149..e0d9203 100644 --- a/upnpcomponents/connectionmanager.cpp +++ b/upnpcomponents/connectionmanager.cpp @@ -70,7 +70,7 @@ int cConnectionManager::execute(Upnp_Action_Request* Request){ } int cConnectionManager::getProtocolInfo(Upnp_Action_Request* Request){ - MESSAGE("Protocol info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CMS, "Protocol info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); cString Result = cString::sprintf( " \ %s \ @@ -87,7 +87,7 @@ int cConnectionManager::getProtocolInfo(Upnp_Action_Request* Request){ } int cConnectionManager::getCurrentConnectionIDs(Upnp_Action_Request* Request){ - MESSAGE("Current connection IDs requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CMS, "Current connection IDs requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); cString Result; const char* IDs = this->getConnectionIDsCVS(); if(!IDs){ @@ -109,7 +109,7 @@ int cConnectionManager::getCurrentConnectionIDs(Upnp_Action_Request* Request){ } int cConnectionManager::getCurrentConnectionInfo(Upnp_Action_Request* Request){ - MESSAGE("Current connection info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CMS, "Current connection info requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); int ConnectionID; if(this->parseIntegerValue(Request->ActionRequest, "ConnectionID", &ConnectionID) != 0){ @@ -156,7 +156,7 @@ int cConnectionManager::getCurrentConnectionInfo(Upnp_Action_Request* Request){ } int cConnectionManager::prepareForConnection(Upnp_Action_Request* Request){ - MESSAGE("Request for a new connection by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CMS, "Request for a new connection by %s.", inet_ntoa(Request->CtrlPtIPAddr)); //char* Result = NULL; char* RemoteProtocolInfo = NULL; char* PeerConnectionManager = NULL; @@ -198,7 +198,7 @@ int cConnectionManager::prepareForConnection(Upnp_Action_Request* Request){ } int cConnectionManager::connectionComplete(Upnp_Action_Request* Request){ - MESSAGE("Request for closing an open connection by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CMS, "Request for closing an open connection by %s.", inet_ntoa(Request->CtrlPtIPAddr)); //char* Result = NULL; int ConnectionID; @@ -216,27 +216,27 @@ int cConnectionManager::connectionComplete(Upnp_Action_Request* Request){ 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; -} +//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("Create virtual connection"); + MESSAGE(VERBOSE_CMS, "Create virtual connection"); if(lastConnectionID == 2147483647) lastConnectionID = 1; cVirtualConnection* Connection = new cVirtualConnection; // AVT is available @@ -268,7 +268,7 @@ cVirtualConnection* cConnectionManager::createVirtualConnection(const char* Remo ERROR("State change notification failed (Error code: %d)",ret); return NULL; } - MESSAGE("Notification of connection creation sent"); + MESSAGE(VERBOSE_CMS, "Notification of connection creation sent"); this->mVirtualConnections->Add(Connection); return Connection; } diff --git a/upnpcomponents/connectionmanager.h b/upnpcomponents/connectionmanager.h index 202df59..4aa25f3 100644 --- a/upnpcomponents/connectionmanager.h +++ b/upnpcomponents/connectionmanager.h @@ -10,6 +10,11 @@ #include "upnpservice.h" +/** + * Connection status + * + * The connection status of a certain virtual connection + */ enum eConnectionStatus { OK, CONTENT_FORMAT_MISMATCH, @@ -18,11 +23,22 @@ enum eConnectionStatus { 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: @@ -41,15 +57,31 @@ private: 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: - cConnectionManager(UpnpDevice_Handle DeviceHandle); + /** + * Constructor of a Connection manager + * + * This creates an instance of a Connection Manager Service and provides + * interfaces for executing actions and subscribing on events. + */ + cConnectionManager( + UpnpDevice_Handle DeviceHandle ///< the UPnP device handle of this root device + ); virtual ~cConnectionManager(); - virtual int execute(Upnp_Action_Request* Request); + /*! @copydoc cUpnpService::subscribe(Upnp_Subscription_Request* Request) */ virtual int subscribe(Upnp_Subscription_Request* Request); - bool setProtocolInfo(const char* ProtocolInfo); -private: + /*! @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); diff --git a/upnpcomponents/contentdirectory.cpp b/upnpcomponents/contentdirectory.cpp index a9afdfa..494b638 100644 --- a/upnpcomponents/contentdirectory.cpp +++ b/upnpcomponents/contentdirectory.cpp @@ -40,7 +40,7 @@ int cContentDirectory::subscribe(Upnp_Subscription_Request* Request){ void cContentDirectory::Action(){ static int Retry = 5; - MESSAGE("Start Content directory thread"); + MESSAGE(VERBOSE_CDS, "Start Content directory thread"); while(this->Running()){ IXML_Document* PropertySet = NULL; UpnpAddToPropertySet(&PropertySet, "SystemUpdateID", itoa(this->mMediaDatabase->getSystemUpdateID())); @@ -84,7 +84,7 @@ int cContentDirectory::execute(Upnp_Action_Request* Request){ int cContentDirectory::browse(Upnp_Action_Request* Request){ - MESSAGE("Browse requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); + MESSAGE(VERBOSE_CDS, "Browse requested by %s.", inet_ntoa(Request->CtrlPtIPAddr)); char* ObjectID = NULL; if(this->parseStringValue(Request->ActionRequest, "ObjectID", &ObjectID)){ @@ -201,7 +201,7 @@ int cContentDirectory::getSystemUpdateID(Upnp_Action_Request* Request){ } int cContentDirectory::getSearchCapabilities(Upnp_Action_Request* Request){ - MESSAGE("Sorry, no search capabilities yet"); + MESSAGE(VERBOSE_CDS, "Sorry, no search capabilities yet"); cString Result = cString::sprintf( " \ @@ -220,7 +220,7 @@ int cContentDirectory::getSearchCapabilities(Upnp_Action_Request* Request){ } int cContentDirectory::getSortCapabilities(Upnp_Action_Request* Request){ - MESSAGE("Sorry, no sort capabilities yet"); + MESSAGE(VERBOSE_CDS, "Sorry, no sort capabilities yet"); cString Result = cString::sprintf( " \ diff --git a/upnpcomponents/contentdirectory.h b/upnpcomponents/contentdirectory.h index a504fdc..7fb4bb9 100644 --- a/upnpcomponents/contentdirectory.h +++ b/upnpcomponents/contentdirectory.h @@ -12,12 +12,30 @@ #include "upnpservice.h" #include "../database/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: - cContentDirectory(UpnpDevice_Handle DeviceHandle, cMediaDatabase* MediaDatabase); + /** + * Constructor of a Content Directory + * + * This creates an instance of a Content Directory Service 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; diff --git a/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp index eaa23c1..27f84f2 100644 --- a/upnpcomponents/dlna.cpp +++ b/upnpcomponents/dlna.cpp @@ -21,7 +21,7 @@ cDlna* cDlna::getInstance(void){ } cDlna::cDlna() { - this->mRegisteredProfiles = new cRegisteredProfiles; + this->mRegisteredProfiles = new cList; this->init(); } @@ -47,6 +47,8 @@ void cDlna::registerProfile(DLNAProfile* Profile, int Op, const char* Ps, int Ci void cDlna::registerMainProfiles(){ this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); + this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU_ISO, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); + this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU_ISO, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); } const char* cDlna::getSupportedProtocols(){ @@ -73,9 +75,9 @@ DLNAProfile* cDlna::getProfileOfChannel(cChannel* Channel){ switch(Channel->Vtype()){ case 0x02: // MPEG2 Video - return &DLNA_PROFILE_MPEG_TS_SD_EU; + return &DLNA_PROFILE_MPEG_TS_SD_EU_ISO; case 0x1B: - return &DLNA_PROFILE_AVC_TS_HD_EU; + return &DLNA_PROFILE_AVC_TS_HD_EU_ISO; default: ERROR("Unknown video type %d for channel %s!", Channel->Vtype(), Channel->Name()); return NULL; diff --git a/upnpcomponents/dlna.h b/upnpcomponents/dlna.h index c05d69a..80ac328 100644 --- a/upnpcomponents/dlna.h +++ b/upnpcomponents/dlna.h @@ -14,6 +14,12 @@ class cDlna; +/** + * Registered DLNA profile + * + * This class contains information about a certain registered profile + * like play speeds or flags + */ class cRegisteredProfile : public cListObject { friend class cDlna; private: @@ -27,10 +33,6 @@ public: virtual ~cRegisteredProfile(){}; }; -class cRegisteredProfiles : public cList { - friend class cDlna; -}; - /** * Enable DLNA compliant media transfer * @@ -41,23 +43,107 @@ class cRegisteredProfiles : public cList { 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); - const char* getDeviceDescription(const char* URLBase); - void registerProfile(DLNAProfile* Profile, int Op = -1, const char* Ps = NULL, int Ci = -1, unsigned int Flags = 0); + /** + * 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 + 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 + ); + /** + * Registeres all known DLNA profiles + * + * Registeres all well known DLNA profiles with its known options + */ void registerMainProfiles(); + /** + * 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(); - const char* getProtocolInfo(DLNAProfile *Prof); - DLNAProfile* getProfileOfChannel(cChannel* Channel); - DLNAProfile* getProfileOfRecording(cRecording* Recording); - DLNAProfile* getProfileOfFile(cString File); + /** + * 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 + ); + /** + * Profile of a channel + * + * Returns the DLNA profile of a VDR channel. It checks the video type to determine + * which profile will match. + * + * @return the matching DLNA profile + */ + DLNAProfile* getProfileOfChannel( + cChannel* Channel ///< the channel of which the profile should created from + ); + /** + * Profile of a recording + * + * Returns the DLNA profile of a VDR recording. It checks the video file to determine + * which profile will match. + * + * @return the matching DLNA profile + */ + DLNAProfile* getProfileOfRecording( + cRecording* Recording ///< the recording of which the profile should be created from + ); + /** + * 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. + * + * @return the matching DLNA profile + */ + DLNAProfile* getProfileOfFile( + cString File ///< the file of which the profile should be created from + ); private: const char* getRegisteredProtocolInfoString(cRegisteredProfile *Profile); cDlna(); void init(void); static cDlna* mInstance; - cRegisteredProfiles* mRegisteredProfiles; + cList* mRegisteredProfiles; }; #endif /* _DLNA_H */ diff --git a/upnpcomponents/upnpservice.cpp b/upnpcomponents/upnpservice.cpp index a1d6a47..fc24cca 100644 --- a/upnpcomponents/upnpservice.cpp +++ b/upnpcomponents/upnpservice.cpp @@ -13,7 +13,7 @@ cUpnpService::cUpnpService(UpnpDevice_Handle DeviceHandle) { this->mDeviceHandle = DeviceHandle; } -int cUpnpService::parseIntegerValue(IXML_Document* Document, const char* Item, int* Value){ +int cUpnpService::parseIntegerValue(IN IXML_Document* Document, IN const char* Item, OUT int* Value){ char* Val = NULL; int Error = 0; @@ -34,7 +34,7 @@ int cUpnpService::parseIntegerValue(IXML_Document* Document, const char* Item, i return Error; } -int cUpnpService::parseStringValue(IXML_Document* Document, const char* Item, char** Value){ +int cUpnpService::parseStringValue(IN IXML_Document* Document, IN const char* Item, OUT char** Value){ char* Val = NULL; int Error = 0; diff --git a/upnpcomponents/upnpservice.h b/upnpcomponents/upnpservice.h index c8630b5..df74d9b 100644 --- a/upnpcomponents/upnpservice.h +++ b/upnpcomponents/upnpservice.h @@ -10,17 +10,109 @@ #include +/** + * 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: - cUpnpService(UpnpDevice_Handle DeviceHandle); + /** + * 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(){}; - virtual int subscribe(Upnp_Subscription_Request* Request) = 0; - virtual int execute(Upnp_Action_Request* Request) = 0; + /** + * 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: - virtual void setError(Upnp_Action_Request* Request, int Error); - int parseIntegerValue(IN IXML_Document* Document, IN const char* Item, OUT int* Value); - int parseStringValue(IN IXML_Document* Document, IN const char* Item, OUT char** Value); - UpnpDevice_Handle mDeviceHandle; + /** + * 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/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp index 383b201..892f5b1 100644 --- a/upnpcomponents/upnpwebserver.cpp +++ b/upnpcomponents/upnpwebserver.cpp @@ -46,6 +46,7 @@ * 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 @@ -73,6 +74,7 @@ struct File_Info_ }; +/** @private */ struct cWebFileHandle { cString Filename; off64_t Size; @@ -108,13 +110,13 @@ UpnpVirtualDirCallbacks cUPnPWebServer::mVirtualDirCallbacks = { }; bool cUPnPWebServer::init(){ - MESSAGE("Initialize callbacks for virtual directories."); + 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("Setting up callbacks"); + MESSAGE(VERBOSE_WEBSERVER, "Setting up callbacks"); if(UpnpSetVirtualDirCallbacks(&cUPnPWebServer::mVirtualDirCallbacks) == UPNP_E_INVALID_ARGUMENT){ ERROR("The virtual directory callbacks are invalid."); @@ -126,7 +128,7 @@ bool cUPnPWebServer::init(){ return false; } - MESSAGE("Add virtual directories."); + 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; @@ -135,7 +137,7 @@ bool cUPnPWebServer::init(){ } bool cUPnPWebServer::uninit(){ - MESSAGE("Disabling the internal webserver"); + MESSAGE(VERBOSE_WEBSERVER, "Disabling the internal webserver"); UpnpEnableWebserver(FALSE); return true; @@ -152,7 +154,7 @@ cUPnPWebServer* cUPnPWebServer::getInstance(const char* rootdir){ } int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ - MESSAGE("Getting information of file '%s'", filename); + MESSAGE(VERBOSE_WEBSERVER, "Getting information of file '%s'", filename); propertyMap Properties; int Method; @@ -164,7 +166,7 @@ int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ switch(Method){ case UPNP_WEB_METHOD_STREAM: { - MESSAGE("Stream request"); + MESSAGE(VERBOSE_WEBSERVER, "Stream request"); propertyMap::iterator It = Properties.find("resId"); unsigned int ResourceID = 0; if(It == Properties.end()){ @@ -188,12 +190,12 @@ int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ finfo.last_modified = Resource->getLastModification(); memcpy(info, &finfo, sizeof(File_Info_)); - MESSAGE("==== File info of Resource #%d ====", Resource->getID()); - MESSAGE("Size: %lld", finfo.file_length); - MESSAGE("Dir: %s", finfo.is_directory?"yes":"no"); - MESSAGE("Read: %s", finfo.is_readable?"allowed":"not allowed"); - MESSAGE("Last modified: %s", ctime(&(finfo.last_modified))); - MESSAGE("Content-type: %s", finfo.content_type); + 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); } } } @@ -222,7 +224,7 @@ int cUPnPWebServer::getInfo(const char* filename, File_Info* info){ } UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mode){ - MESSAGE("File %s was opened for %s.",filename,mode==UPNP_READ ? "reading" : "writing"); + MESSAGE(VERBOSE_WEBSERVER, "File %s was opened for %s.",filename,mode==UPNP_READ ? "reading" : "writing"); propertyMap Properties; int Method; @@ -235,7 +237,7 @@ UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mo switch(Method){ case UPNP_WEB_METHOD_STREAM: { - MESSAGE("Stream request"); + MESSAGE(VERBOSE_WEBSERVER, "Stream request"); propertyMap::iterator It = Properties.find("resId"); unsigned int ResourceID = 0; if(It == Properties.end()){ @@ -258,7 +260,7 @@ UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mo { char* ChannelID = strtok(strdup(Resource->getResource()),":"); int AudioID = atoi(strtok(NULL,":")); - MESSAGE("Try to create Receiver for Channel %s with Audio ID %d", ChannelID, AudioID); + MESSAGE(VERBOSE_LIVE_TV, "Try to create Receiver for Channel %s with Audio ID %d", ChannelID, AudioID); cChannel* Channel = Channels.GetByChannelID(tChannelID::FromString(ChannelID)); if(!Channel){ ERROR("No such channel with ID %s", ChannelID); @@ -303,32 +305,32 @@ UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mo else { return NULL; } - MESSAGE("Open the file handle"); + 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("Writing to %s", *FileHandle->Filename); + 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("Reading from %s", *FileHandle->Filename); + 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("Seeking on %s", *FileHandle->Filename); + MESSAGE(VERBOSE_BUFFERS, "Seeking on %s", *FileHandle->Filename); return FileHandle->FileHandle->seek(offset, origin); } int cUPnPWebServer::close(UpnpWebFileHandle fh){ cWebFileHandle *FileHandle = (cWebFileHandle *)fh; - MESSAGE("Closing file %s", *FileHandle->Filename); + MESSAGE(VERBOSE_WEBSERVER, "Closing file %s", *FileHandle->Filename); FileHandle->FileHandle->close(); delete FileHandle->FileHandle; delete FileHandle; diff --git a/upnpcomponents/upnpwebserver.h b/upnpcomponents/upnpwebserver.h index 613f97b..0a49cf9 100644 --- a/upnpcomponents/upnpwebserver.h +++ b/upnpcomponents/upnpwebserver.h @@ -11,6 +11,13 @@ #include "../common.h" #include +/** + * The internal webserver + * + * This is the internal webserver. It distributes all the contents of the + * UPnP-Server. + * + */ class cUPnPWebServer { friend class cUPnPServer; private: @@ -19,11 +26,40 @@ private: const char* mRootdir; cUPnPWebServer(const char* root = "/"); protected: - bool enable(bool enable); public: + /** + * Initializes the webserver + * + * It enables the webserver which comes with the Intel SDK 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(); - static cUPnPWebServer* getInstance(const char* rootdir = "/"); + /** + * 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(); //}; @@ -32,6 +68,7 @@ public: * The callback functions for the webserver * ****************************************************/ + /** * Retrieve file information * @@ -48,8 +85,8 @@ public: * Opens a file in a virtual directory with the specified mode. * * Possible modes are: - * - UPNP_READ : Opens the file for reading - * - UPNP_WRITE: Opens the file for writing + * - \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 * -- cgit v1.2.3 From 60db82604cd0ab407e857b9f11d9588f9076333b Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 29 Dec 2009 19:34:50 +0100 Subject: Added mpeg4 p2 profiles --- Makefile | 3 +- README | 14 ++- common.h | 81 ++++--------- database/object.cpp | 4 - database/object.h | 12 +- database/resources.cpp | 115 ++++++++++-------- misc/avdetector.cpp | 250 +++++++++++++++++++++++++++++++++++---- misc/avdetector.h | 82 +++++++++++-- misc/util.cpp | 44 +++++++ misc/util.h | 2 + receiver/recplayer.cpp | 4 +- upnpcomponents/dlna.cpp | 26 ---- upnpcomponents/dlna.h | 33 ------ upnpcomponents/upnpwebserver.cpp | 4 +- 14 files changed, 453 insertions(+), 221 deletions(-) diff --git a/Makefile b/Makefile index 27aada4..c67a924 100644 --- a/Makefile +++ b/Makefile @@ -52,6 +52,7 @@ LIBS += -lupnp -lixml -lsqlite3 -lavformat -lavcodec INCLUDES += -I$(VDRDIR)/include -I/usr/include \ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' +DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE ### The object files (add further files here): @@ -62,12 +63,12 @@ OBJS = $(PLUGIN).o \ misc/util.o \ misc/config.o \ misc/search.o \ + misc/avdetector.o \ database/database.o \ database/metadata.o \ database/object.o \ database/resources.o \ server/server.o \ - misc/avdetector.o \ upnpcomponents/dlna.o \ upnpcomponents/upnpwebserver.o \ upnpcomponents/upnpservice.o \ diff --git a/README b/README index 1eba683..d4b03a5 100644 --- a/README +++ b/README @@ -21,7 +21,7 @@ University of Applied Science Gustav-Freytag-Straße 43-45 04277 Leipzig Germany -http://www.hftl.de +http://www.hft-leipzig.de All rights reserved. @@ -83,9 +83,9 @@ The server has a unique identifier, which is "uuid:b120ba52-d88d-4500-9b64-888971d83fd3". Other devices in the network can find and identify the VDR UPnP Server with this ID. However, the server should be found automatically and being listed under the supported media server -devices. If not, please report this as a bug on the projects homepage or send an +devices. If not, please report this as a bug on the project homepage or send an email to the developers of this plugin with the full device description and, if -applicable, the errors thrown by the media player device and the server. +applicable, the errors thrown by the media player device and/or the server. Dependencies: @@ -106,3 +106,11 @@ ATTENTION: DO NOT USE ANOTHER VERSION OF LIBUPNP. libupnp-1.8.0 is known not to work with this plugin! Versions below 1.6.6 may work. However, there may exist some unknown issues. + +If you want to know everything about the code, please see the source code +documentation at http://upnp.vdr-developer.org/docs/ where all public members +are explained. + +I appreciate, if you help making the plugin better. If you find any project +related errors or missing features, please open a new ticket at the plugin +website with a detailed description of what you want or what happened. diff --git a/common.h b/common.h index 6caa065..ae368b2 100644 --- a/common.h +++ b/common.h @@ -66,6 +66,7 @@ #define INOUT //#define DEBUG +//#define WITH_WINDOWS_MEDIA #define TOSTRING(s) #s @@ -177,24 +178,24 @@ void message(int level, const char* File, int Line, const char* Format, ...) __a * - \-vvvvv Log level 4 * - \-vvvvvv Log level 5 */ -#define VERBOSE_SQL 4 -#define VERBOSE_SQL_FETCHES 5 -#define VERBOSE_SQL_STATEMENTS 5 -#define VERBOSE_DIDL 4 -#define VERBOSE_LIVE_TV 3 -#define VERBOSE_RECORDS 3 -#define VERBOSE_CUSTOMFILES 3 -#define VERBOSE_SDK 1 -#define VERBOSE_EPG_UPDATES 3 -#define VERBOSE_WEBSERVER 2 -#define VERBOSE_MODIFICATIONS 2 -#define VERBOSE_METADATA 3 -#define VERBOSE_CUSTOM_OUTPUT 5 -#define VERBOSE_PARSERS 5 -#define VERBOSE_BUFFERS 5 -#define VERBOSE_CDS 2 -#define VERBOSE_CMS 2 -#define VERBOSE_OBJECTS 3 +#define VERBOSE_SQL 4 ///< SQL messages (open DB, close DB etc.) +#define VERBOSE_SQL_FETCHES 0 ///< SQL fetch messages (SELECT only) +#define VERBOSE_SQL_STATEMENTS 0 ///< all SQL statements +#define VERBOSE_DIDL 4 ///< print DIDL related messages +#define VERBOSE_LIVE_TV 3 ///< print live TV related messages +#define VERBOSE_RECORDS 3 ///< print messages related to records +#define VERBOSE_CUSTOMFILES 3 ///< print messages related to custom files and sometimes records +#define VERBOSE_SDK 1 ///< print important messages of the program flow +#define VERBOSE_EPG_UPDATES 3 ///< show information on EPG changes +#define VERBOSE_WEBSERVER 2 ///< print actions done by the webserver +#define VERBOSE_MODIFICATIONS 2 ///< show modifications to objects or anything else +#define VERBOSE_METADATA 3 ///< print additional metadata information +#define VERBOSE_CUSTOM_OUTPUT 5 ///< everything else... +#define VERBOSE_PARSERS 5 ///< print the parsers output +#define VERBOSE_BUFFERS 5 ///< print the buffer output +#define VERBOSE_CDS 2 ///< print messages from the content directory +#define VERBOSE_CMS 2 ///< print messages from the connection manager +#define VERBOSE_OBJECTS 3 ///< print messages related to objects /**************************************************** * @@ -468,6 +469,10 @@ enum UPNP_WEB_METHODS { UPNP_PROP_LONGDESCRIPTION ","\ UPNP_PROP_PUBLISHER +#define UPNP_DURATION_FORMAT_STRING "%5d:%02d:%02d" +#define UPNP_DURATION_FRAME_FORMAT ".%03d" +#define AVDETECTOR_TIME_BASE 1000 + /**************************************************** * * The UPnP CDS actions @@ -731,45 +736,7 @@ enum UPnPWriteStatus { * ****************************************************/ -/** - * 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 -}; - -/* Images */ -/* Audio */ -extern DLNAProfile DLNA_PROFILE_MPEG1_L3; ///< DLNA MP3 Profile -/* Video */ -extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU; ///< DLNA Profile for DVB Television broadcasts -extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU; ///< DLNA Profile for HD DVB Television broadcasts -extern DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO; ///< DLNA Profile for DVB Television broadcasts without timestamp -extern DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO; ///< DLNA Profile for HD DVB Television broadcasts without timestamp - -/* Icons */ -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 -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 +/** @see dlna/profiles.h */ /**************************************************** * diff --git a/database/object.cpp b/database/object.cpp index f6875f9..5ab355d 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -35,10 +35,6 @@ cUPnPResource::cUPnPResource(){ this->mContentType = NULL; } -off64_t cUPnPResource::getFileSize() const { - return (this->mSize) ? this->mSize : (off64_t)-1; -} - time_t cUPnPResource::getLastModification() const { time_t Time; const cRecording* Recording; diff --git a/database/object.h b/database/object.h index 245a617..9c2c133 100644 --- a/database/object.h +++ b/database/object.h @@ -137,7 +137,7 @@ private: cString mProtocolInfo; cString mContentType; cString mImportURI; - unsigned long mSize; + off64_t mSize; unsigned int mBitrate; unsigned int mSampleFrequency; unsigned int mBitsPerSample; @@ -211,14 +211,6 @@ public: * @return the resource type */ int getResourceType() const { return this->mResourceType; } - /** - * Get the size - * - * Returns the resource size or -1 if its unknown - * - * @return the resource size or -1 if unknown - */ - unsigned long getSize() const { return this->mSize; } /** * Get the file size * @@ -227,7 +219,7 @@ public: * * @return the file size */ - off64_t getFileSize() const; + off64_t getFileSize() const { return this->mSize; }; /** * Get the last modification * diff --git a/database/resources.cpp b/database/resources.cpp index 8f0dec4..646560a 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -90,24 +90,45 @@ cUPnPResource* cUPnPResources::getResource(unsigned int ResourceID){ } int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* Recording){ - cString VideoFile = cString::sprintf(VDR_RECORDFILE_PATTERN_TS, Recording->FileName(), 1); - - cAudioVideoDetector* Detector = new cAudioVideoDetector(); - - // TODO: add DLNA-Support to detector - - cString ContentType = "video/mpeg"; - cString ProtocolInfo = "http-get:*:video/mpeg:*"; + if(!Object || !Recording){ + ERROR("Invalid input arguments"); + return -1; + } - cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_RECORDING, Recording->FileName(), ContentType, ProtocolInfo); + cAudioVideoDetector* Detector = new cAudioVideoDetector(Recording); - if(Detector->detectVideoProperties(Resource, VideoFile)){ + if(Detector->detectProperties()){ ERROR("Error while detecting video properties"); + delete Detector; return -1; } + if(!Detector->getDLNAProfile()){ + ERROR("No DLNA profile found for Recording %s", Recording->Name()); + delete Detector; + return -1; + } + + const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Detector->getDLNAProfile()); + + MESSAGE(VERBOSE_METADATA, "Protocol info: %s", ProtocolInfo); + + cString ResourceFile = Recording->FileName(); + cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_RECORDING,ResourceFile, Detector->getDLNAProfile()->mime, ProtocolInfo); + Resource->mBitrate = Detector->getBitrate(); + Resource->mBitsPerSample = Detector->getBitsPerSample(); + Resource->mDuration = duration(Detector->getDuration()); + Resource->mResolution = (Detector->getWidth() && Detector->getHeight()) ? *cString::sprintf("%dx%d",Detector->getWidth(), Detector->getHeight()) : NULL; + Resource->mSampleFrequency = Detector->getSampleFrequency(); + Resource->mSize = Detector->getFileSize(); + Resource->mNrAudioChannels = Detector->getNumberOfAudioChannels(); + Resource->mImportURI = NULL; + Resource->mColorDepth = 0; + Object->addResource(Resource); + this->mMediator->saveResource(Resource); + this->mResources->Add(Resource, Resource->getID()); + delete Detector; - MESSAGE(VERBOSE_SDK, "To be continued, may it work with DLNA?! Guess, not!"); return 0; } @@ -122,53 +143,45 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel return -1; } - DLNAProfile* Profile = cDlna::getInstance()->getProfileOfChannel(Channel); + cAudioVideoDetector* Detector = new cAudioVideoDetector(Channel); + + if(!Detector->detectProperties()){ + ERROR("Cannot detect channel properties"); + delete Detector; + return -1; + } - if(!Profile){ - ERROR("No profile found for Channel %s", *Channel->GetChannelID().ToString()); + if(!Detector->getDLNAProfile()){ + ERROR("No DLNA profile found for Channel %s", *Channel->GetChannelID().ToString()); + delete Detector; return -1; } - const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Profile); + const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Detector->getDLNAProfile()); MESSAGE(VERBOSE_METADATA, "Protocol info: %s", ProtocolInfo); - // Adapted from streamdev + // Index which may be used to indicate different resources with same channel ID + // For instance a different DVB card + // Not used yet. int index = 0; - for(int i=0; Channel->Apid(i)!=0; i++, index++){ - MESSAGE(VERBOSE_METADATA, "Analog channel %d", i); - cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); - cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); - Resource->mBitrate = 0; - Resource->mBitsPerSample = 0; - Resource->mColorDepth = 0; - Resource->mDuration = NULL; - Resource->mImportURI = NULL; - Resource->mResolution = NULL; - Resource->mSampleFrequency = 0; - Resource->mSize = 0; - Resource->mNrAudioChannels = 0; - Object->addResource(Resource); - this->mMediator->saveResource(Resource); - this->mResources->Add(Resource, Resource->getID()); - } - for(int i=0; Channel->Dpid(i)!=0; i++, index++){ - MESSAGE(VERBOSE_METADATA, "Digital channel %d", i); - cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); - cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Profile->mime, ProtocolInfo); - Resource->mBitrate = 0; - Resource->mBitsPerSample = 0; - Resource->mColorDepth = 0; - Resource->mDuration = NULL; - Resource->mImportURI = NULL; - Resource->mResolution = NULL; - Resource->mSampleFrequency = 0; - Resource->mSize = 0; - Object->addResource(Resource); - this->mMediator->saveResource(Resource); - this->mResources->Add(Resource, Resource->getID()); - } + + cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); + cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Detector->getDLNAProfile()->mime, ProtocolInfo); + Resource->mBitrate = Detector->getBitrate(); + Resource->mBitsPerSample = Detector->getBitsPerSample(); + Resource->mDuration = duration(Detector->getDuration()); + Resource->mResolution = (Detector->getWidth() && Detector->getHeight()) ? *cString::sprintf("%dx%d",Detector->getWidth(), Detector->getHeight()) : NULL; + Resource->mSampleFrequency = Detector->getSampleFrequency(); + Resource->mSize = Detector->getFileSize(); + Resource->mNrAudioChannels = Detector->getNumberOfAudioChannels(); + Resource->mImportURI = NULL; + Resource->mColorDepth = 0; + Object->addResource(Resource); + this->mMediator->saveResource(Resource); + this->mResources->Add(Resource, Resource->getID()); + delete Detector; return 0; } @@ -205,7 +218,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ Resource->mResource = Value; } else if(!strcasecmp(SQLITE_COL_SIZE, Column)){ - Resource->mSize = *Value?atol(Value):0; + Resource->mSize = (off64_t)(*Value?atol(Value):0); } else if(!strcasecmp(SQLITE_COL_DURATION, Column)){ Resource->mDuration = Value; @@ -243,7 +256,7 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ cString Format = "UPDATE %s SET %s=%Q," "%s=%Q," "%s=%Q," - "%s=%ld," + "%s=%lld," "%s=%Q," "%s=%d," "%s=%d," diff --git a/misc/avdetector.cpp b/misc/avdetector.cpp index 8f3bc8f..bb1c9c8 100644 --- a/misc/avdetector.cpp +++ b/misc/avdetector.cpp @@ -6,31 +6,207 @@ */ #include "avdetector.h" -extern "C" { -#include -#include +#include + +cAudioVideoDetector::cAudioVideoDetector(const char* Filename) : mResourceType(UPNP_RESOURCE_FILE) { + this->mResource.Filename = Filename; + this->init(); } -using namespace std; +cAudioVideoDetector::cAudioVideoDetector(const cChannel* Channel) : mResourceType(UPNP_RESOURCE_CHANNEL) { + this->mResource.Channel = Channel; + this->init(); +} -int cAudioVideoDetector::detectVideoProperties(cUPnPResource* Resource, const char* Filename){ -// // Register avformat +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->init(); +} + +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(){ + 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"); + } + } + } + } + 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, Filename, NULL, 0, NULL)){ - ERROR("AVDetector: Error while opening file %s", Filename); + + 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 { - if(av_find_stream_info(FormatCtx)<0){ - ERROR("AVDetector: Cannot find the stream information"); - return -1; + if((ret = this->analyseFormat(FormatCtx))<0){ + ERROR("AVDetector: Error while analysing format"); + return ret; + } + 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; + } + + return 0; + } } +} -#ifdef DEBUG - dump_format(FormatCtx, 0, Filename, 0); -#endif +int cAudioVideoDetector::analyseFormat(AVFormatContext* FormatCtx){ + if(!FormatCtx) return -1; + + this->mSize = FormatCtx->file_size; + this->mDuration = FormatCtx->duration; + + MESSAGE(VERBOSE_METADATA, "Format properties: %lld and %lld Bytes", this->mDuration, this->mSize); + + AVMetadataTag* Tag = NULL; + + while((Tag=av_metadata_get(FormatCtx->metadata,"",Tag,AV_METADATA_IGNORE_SUFFIX))){ + MESSAGE(VERBOSE_METADATA, "%s: %s", Tag->key, Tag->value); + } + + return 0; +} + +int cAudioVideoDetector::analyseVideo(AVFormatContext* FormatCtx) +{ +// // Register avformat unsigned int i; int videoStream = -1; @@ -43,24 +219,52 @@ int cAudioVideoDetector::detectVideoProperties(cUPnPResource* Resource, const ch } if(videoStream == -1){ ERROR("AVDetector: No video stream found"); - return -1; + return 1; } CodecCtx = FormatCtx->streams[videoStream]->codec; AVCodec* Codec = avcodec_find_decoder(CodecCtx->codec_id); - unsigned int width = CodecCtx->width; - unsigned int height = CodecCtx->height; - unsigned int bitrate = CodecCtx->bit_rate; + this->mWidth = CodecCtx->width; + this->mHeight = CodecCtx->height; + this->mBitrate = CodecCtx->bit_rate; + this->mSampleFrequency = CodecCtx->sample_rate; + this->mBitsPerSample = CodecCtx->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, width, height, bitrate); + MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream %dx%d at %d bit/s", codecName, this->mWidth, this->mHeight, this->mBitrate); + return 0; +} - Resource->mBitrate = bitrate; - Resource->mSampleFrequency = CodecCtx->sample_rate; - Resource->mResolution = cString::sprintf("%dx%d", width, height); - +int cAudioVideoDetector::analyseAudio(AVFormatContext* FormatCtx){ + + unsigned int i; int audioStream = -1; + + AVCodecContext *CodecCtx = NULL; + for(i = 0; i < FormatCtx->nb_streams; i++){ + if(FormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO){ + audioStream = i; + break; + } + } + if(audioStream == -1){ + ERROR("AVDetector: No audio stream found"); + return 1; + } + + CodecCtx = FormatCtx->streams[audioStream]->codec; + AVCodec* Codec = avcodec_find_decoder(CodecCtx->codec_id); + + this->mNrAudioChannels = CodecCtx->channels; + + const char* codecName = (Codec)?Codec->name:"unknown"; + + MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream at %d bit/s", codecName, CodecCtx->bit_rate); return 0; } + diff --git a/misc/avdetector.h b/misc/avdetector.h index b043c59..33b3298 100644 --- a/misc/avdetector.h +++ b/misc/avdetector.h @@ -9,6 +9,13 @@ #define _AVDETECTOR_H #include "../database/object.h" +#include +#include + +extern "C" { +#include +#include +} /** * The audio/video detector @@ -18,23 +25,80 @@ * required for determination of a suitable DLNA profile. */ class cAudioVideoDetector { -public: - cAudioVideoDetector(){}; - virtual ~cAudioVideoDetector(){}; +private: + void init(); + void uninit(); + int detectChannelProperties(); + int detectFileProperties(); + int detectRecordingProperties(); /** * Detect video properties * - * This detects video properties of a video stream and stores them in the - * Resource object. + * This detects video properties of a video stream * - * @param Resource the resource, where to save the data - * @param Filename the file, which shall be read * @return returns * - \bc 0, if the detection was successful * - \bc <0, otherwise */ - int detectVideoProperties(cUPnPResource* Resource, const char* Filename); -private: + 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); + int analyseFormat(AVFormatContext* FormatCtx); + int detectDLNAProfile(); + 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; } }; #endif /* _AVDETECTOR_H */ diff --git a/misc/util.cpp b/misc/util.cpp index 8cfc524..d93d027 100644 --- a/misc/util.cpp +++ b/misc/util.cpp @@ -16,6 +16,50 @@ #include #include #include +#include + +#define DURATION_MAX_STRING_LENGTH 13 // DLNA: 1-5 DIGIT hours : + // 2 DIGIT minutes : + // 2 DIGIT seconds . + // 3 DIGIT fraction + +char* duration(off64_t duration, unsigned int timeBase){ + if (timeBase == 0) timeBase = 1; + + int seconds, minutes, hours, fraction; + + seconds = duration / timeBase; + fraction = duration % timeBase; + minutes = seconds / 60; + seconds %= 60; + hours = minutes / 60; + minutes %= 60; + + char* output = new char[DURATION_MAX_STRING_LENGTH]; + + if(!snprintf( + output, + DURATION_MAX_STRING_LENGTH, + UPNP_DURATION_FORMAT_STRING, + hours, minutes, seconds) + ){ + delete output; + return NULL; + } + else { + if(timeBase > 1 && + !snprintf( + output, + DURATION_MAX_STRING_LENGTH, + "%s" UPNP_DURATION_FRAME_FORMAT, + output, fraction) + ){ + delete output; + return NULL; + } + else return output; + } +} char* substr(const char* str, unsigned int offset, unsigned int length){ if(offset > strlen(str)) return NULL; diff --git a/misc/util.h b/misc/util.h index 6ff2a54..e5bc061 100644 --- a/misc/util.h +++ b/misc/util.h @@ -105,6 +105,8 @@ int ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, const cha * @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 diff --git a/receiver/recplayer.cpp b/receiver/recplayer.cpp index a9ea85b..954c9c8 100644 --- a/receiver/recplayer.cpp +++ b/receiver/recplayer.cpp @@ -102,7 +102,7 @@ int cRecordingPlayer::seek(off_t offset, int origin){ while(this->mOffset > (fileEndOffset = this->mOffsets[this->mIndex])){ // If its not possible to switch to next file, there was an error if(!this->NextFile()){ - ERROR("Offset %ld not in the range of a file!", offset); + ERROR("Offset %lld not in the range of a file!", offset); return -1; } } @@ -133,7 +133,7 @@ void cRecordingPlayer::Scan(){ } fseek(File, 0, SEEK_END); off_t offset = ftell(File); - MESSAGE(VERBOSE_RECORDS, "File %d has its last offset at %ld", i, offset); + MESSAGE(VERBOSE_RECORDS, "File %d has its last offset at %lld", i, offset); this->mOffsets[i+1] = this->mOffsets[i] + offset; this->mTotalLenght = this->mOffsets[i+1]; i++; diff --git a/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp index 27f84f2..c8bb8a9 100644 --- a/upnpcomponents/dlna.cpp +++ b/upnpcomponents/dlna.cpp @@ -69,32 +69,6 @@ const char* cDlna::getProtocolInfo(DLNAProfile *Prof){ return NULL; } -DLNAProfile* cDlna::getProfileOfChannel(cChannel* Channel){ - if(Channel == NULL) return NULL; - // Switching the video types of the DVB-Stream - switch(Channel->Vtype()){ - case 0x02: - // MPEG2 Video - return &DLNA_PROFILE_MPEG_TS_SD_EU_ISO; - case 0x1B: - return &DLNA_PROFILE_AVC_TS_HD_EU_ISO; - default: - ERROR("Unknown video type %d for channel %s!", Channel->Vtype(), Channel->Name()); - return NULL; - } -} - -DLNAProfile* cDlna::getProfileOfRecording(cRecording* Recording){ - // Get the data of the first file of the recording - cString File = cString::sprintf(VDR_RECORDFILE_PATTERN_TS, Recording->FileName(), 1); - return this->getProfileOfFile(File); -} - -DLNAProfile* cDlna::getProfileOfFile(cString){ - WARNING("Not yet supported"); - return NULL; -} - const char* cDlna::getRegisteredProtocolInfoString(cRegisteredProfile *Profile){ cString DLNA4thField = NULL; DLNA4thField = cString::sprintf("DLNA.ORG_PN=%s", Profile->Profile->ID); diff --git a/upnpcomponents/dlna.h b/upnpcomponents/dlna.h index 80ac328..44ed3c4 100644 --- a/upnpcomponents/dlna.h +++ b/upnpcomponents/dlna.h @@ -105,39 +105,6 @@ public: const char* getProtocolInfo( DLNAProfile *Prof ///< the Profile of which the protocol info shall be returned ); - /** - * Profile of a channel - * - * Returns the DLNA profile of a VDR channel. It checks the video type to determine - * which profile will match. - * - * @return the matching DLNA profile - */ - DLNAProfile* getProfileOfChannel( - cChannel* Channel ///< the channel of which the profile should created from - ); - /** - * Profile of a recording - * - * Returns the DLNA profile of a VDR recording. It checks the video file to determine - * which profile will match. - * - * @return the matching DLNA profile - */ - DLNAProfile* getProfileOfRecording( - cRecording* Recording ///< the recording of which the profile should be created from - ); - /** - * 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. - * - * @return the matching DLNA profile - */ - DLNAProfile* getProfileOfFile( - cString File ///< the file of which the profile should be created from - ); private: const char* getRegisteredProtocolInfoString(cRegisteredProfile *Profile); cDlna(); diff --git a/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp index 892f5b1..b192cd9 100644 --- a/upnpcomponents/upnpwebserver.cpp +++ b/upnpcomponents/upnpwebserver.cpp @@ -259,8 +259,8 @@ UpnpWebFileHandle cUPnPWebServer::open(const char* filename, UpnpOpenFileMode mo case UPNP_RESOURCE_CHANNEL: { char* ChannelID = strtok(strdup(Resource->getResource()),":"); - int AudioID = atoi(strtok(NULL,":")); - MESSAGE(VERBOSE_LIVE_TV, "Try to create Receiver for Channel %s with Audio ID %d", ChannelID, AudioID); + 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); -- cgit v1.2.3 From 2103055b5ebfa389a5bec4c98f414608e959bba4 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Sun, 24 Jan 2010 21:28:56 +0100 Subject: Added (finally) the record streaming function and some other things --- HISTORY | 15 + Makefile | 57 +- README | 51 +- common.cpp | 13 +- common.h | 56 +- database/database.cpp | 4 +- database/database.h | 1024 -------------------- database/metadata.cpp | 159 ++-- database/metadata.h | 185 ---- database/object.cpp | 40 - database/object.h | 1728 ---------------------------------- database/resources.cpp | 57 +- database/resources.h | 162 ---- misc/avdetector.cpp | 270 ------ misc/avdetector.h | 105 --- misc/config.cpp | 22 +- misc/config.h | 72 -- misc/menusetup.h | 103 -- misc/search.h | 156 --- misc/util.h | 144 --- receiver/filehandle.cpp | 8 - receiver/filehandle.h | 108 --- receiver/livereceiver.cpp | 8 +- receiver/livereceiver.h | 104 -- receiver/recplayer.cpp | 168 ++-- receiver/recplayer.h | 57 -- server/server.cpp | 11 +- server/server.h | 221 ----- upnp.cpp | 50 +- upnp.h | 2 +- upnpcomponents/connectionmanager.cpp | 393 -------- upnpcomponents/connectionmanager.h | 99 -- upnpcomponents/contentdirectory.cpp | 306 ------ upnpcomponents/contentdirectory.h | 56 -- upnpcomponents/dlna.cpp | 212 ----- upnpcomponents/dlna.h | 117 --- upnpcomponents/upnpservice.cpp | 118 --- upnpcomponents/upnpservice.h | 119 --- upnpcomponents/upnpwebserver.cpp | 338 ------- upnpcomponents/upnpwebserver.h | 160 ---- web/icons/upnpIconLrg.jpeg | Bin 6620 -> 0 bytes web/icons/upnpIconLrg.png | Bin 17309 -> 0 bytes web/icons/upnpIconSm.jpeg | Bin 2416 -> 0 bytes web/icons/upnpIconSm.png | Bin 4769 -> 0 bytes web/xml/cds_scpd.xml | 145 --- web/xml/cms_scpd.xml | 133 --- 46 files changed, 378 insertions(+), 6978 deletions(-) delete mode 100644 database/database.h delete mode 100644 database/metadata.h delete mode 100644 database/object.h delete mode 100644 database/resources.h delete mode 100644 misc/avdetector.cpp delete mode 100644 misc/avdetector.h delete mode 100644 misc/config.h delete mode 100644 misc/menusetup.h delete mode 100644 misc/search.h delete mode 100644 misc/util.h delete mode 100644 receiver/filehandle.cpp delete mode 100644 receiver/filehandle.h delete mode 100644 receiver/livereceiver.h delete mode 100644 receiver/recplayer.h delete mode 100644 server/server.h delete mode 100644 upnpcomponents/connectionmanager.cpp delete mode 100644 upnpcomponents/connectionmanager.h delete mode 100644 upnpcomponents/contentdirectory.cpp delete mode 100644 upnpcomponents/contentdirectory.h delete mode 100644 upnpcomponents/dlna.cpp delete mode 100644 upnpcomponents/dlna.h delete mode 100644 upnpcomponents/upnpservice.cpp delete mode 100644 upnpcomponents/upnpservice.h delete mode 100644 upnpcomponents/upnpwebserver.cpp delete mode 100644 upnpcomponents/upnpwebserver.h delete mode 100755 web/icons/upnpIconLrg.jpeg delete mode 100755 web/icons/upnpIconLrg.png delete mode 100755 web/icons/upnpIconSm.jpeg delete mode 100755 web/icons/upnpIconSm.png delete mode 100644 web/xml/cds_scpd.xml delete mode 100644 web/xml/cms_scpd.xml diff --git a/HISTORY b/HISTORY index a510f03..e2a4c1c 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,21 @@ VDR Plugin 'upnp' Revision History ---------------------------------- +2009-01-24: Version 0.0.2-alpha0 + + - New: Added record streaming support for SDTV + HDTV is not working yet, as it requires different DLNA profiles + - Bug: Improved live-tv streaming quality, which will hopefully fix the + problem with the buffer strategy and channels with bad bandwidth + - New: Rearranged folder structure to meet future features + - New: Added german translation + - New: support for DLNA compatible devices. For those devices a special + patch is required which must be applied to libupnp-1.6.6. + See README for more information + - New: Added new command line option to specify the destination folder + for the metadata database and the webfolder. + See README for more information + 2009-11-19: Version 0.0.1-alpha4 - New: Added options for verbosity level and autodetect settings. diff --git a/Makefile b/Makefile index c67a924..f01ccbb 100644 --- a/Makefile +++ b/Makefile @@ -27,15 +27,10 @@ VDRDIR = ../../.. LIBDIR = ../../lib TMPDIR = /tmp -WEBDIR = $(shell grep '\#define UPNP_DIR_PRESENTATION*' $(COMMON) | awk '{ print $$3 }' | sed -e 's/["/]//g') - ### Allow user defined options to overwrite defaults: -include $(VDRDIR)/Make.config -#DESDIR = /var/lib/vdrdevel/plugins/$(PLUGIN) -DESDIR = $(CONFDIR)/plugins/$(PLUGIN) - ### The version number of VDR's plugin API (taken from VDR's "config.h"): APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) @@ -49,13 +44,44 @@ PACKAGE = vdr-$(ARCHIVE) LIBS += -lupnp -lixml -lsqlite3 -lavformat -lavcodec -INCLUDES += -I$(VDRDIR)/include -I/usr/include \ +INCLUDES += -I$(VDRDIR)/include -I/usr/include -Iinc \ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE +ifdef WITH_WINDOWS_MEDIA + DEFINES += -DWITH_WINDOWS_MEDIA +endif + +DEFINES += -DWITHOUT_AUDIO -DWITHOUT_CUSTOM_VIDEOS + ### The object files (add further files here): +# DLNA Profiles +DLNA_PROFILES = dlna/profiles/aac.o \ + dlna/profiles/ac3.o \ + dlna/profiles/amr.o \ + dlna/profiles/atrac3plus.o \ + dlna/profiles/jpeg.o \ + dlna/profiles/lpcm.o \ + dlna/profiles/mpa.o \ + dlna/profiles/mpeg1.o \ + dlna/profiles/mpeg2.o \ + dlna/profiles/mpeg4_p2.o \ + dlna/profiles/mpeg4_p10.o \ + dlna/profiles/png.o \ + dlna/profiles/container.o + +# Windows Media Formats +ifdef WITH_WINDOWS_MEDIA + DLNA_PROFILES += dlna/profiles/wma.o \ + dlna/profiles/wmv9.o +endif + +DLNA_OBJS = dlna/dlna.o \ + dlna/avdetector.o \ + $(DLNA_PROFILES) + # Root folder OBJS = $(PLUGIN).o \ common.o \ @@ -63,20 +89,18 @@ OBJS = $(PLUGIN).o \ misc/util.o \ misc/config.o \ misc/search.o \ - misc/avdetector.o \ database/database.o \ database/metadata.o \ database/object.o \ database/resources.o \ server/server.o \ - upnpcomponents/dlna.o \ - upnpcomponents/upnpwebserver.o \ - upnpcomponents/upnpservice.o \ - upnpcomponents/connectionmanager.o \ - upnpcomponents/contentdirectory.o \ + server/webserver.o \ + upnp/service.o \ + upnp/connectionmanager.o \ + upnp/contentdirectory.o \ receiver/livereceiver.o \ receiver/recplayer.o \ - receiver/filehandle.o \ + $(DLNA_OBJS) ### The main target: @@ -109,7 +133,7 @@ I18Npot = $(PODIR)/$(PLUGIN).pot msgfmt -c -o $@ $< $(I18Npot): $(wildcard *.cpp) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='' -o $@ $^ + xgettext -C -cTRANSLATORS --no-wrap --no-location -k -k_ -ktr -ktrNOOP --msgid-bugs-address='' -o $@ $(OBJS:%.o=%.cpp) %.po: $(I18Npot) msgmerge -U --no-wrap --no-location --backup=none -q $@ $< @@ -127,15 +151,12 @@ i18n: $(I18Nmsgs) $(I18Npot) libvdr-$(PLUGIN).so: $(OBJS) $(CXX) $(CXXFLAGS) $(LIBS) -shared $(OBJS) -o $@ -lc @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) - @-rm -rf $(DESDIR)/$(WEBDIR) - @mkdir -p $(DESDIR)/$(WEBDIR) - @cp --remove-destination -r $(WEBDIR)/* $(DESDIR)/$(WEBDIR) dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE) @mkdir $(TMPDIR)/$(ARCHIVE) @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) + @tar --exclude="doc" -czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) @-rm -rf $(TMPDIR)/$(ARCHIVE) @echo Distribution package created as $(PACKAGE).tgz diff --git a/README b/README index d4b03a5..d6404a7 100644 --- a/README +++ b/README @@ -25,6 +25,7 @@ http://www.hft-leipzig.de All rights reserved. + Description: UPnP/DLNA Plugin for Video Disk Recorder @@ -41,25 +42,29 @@ options or by editing the setup via the VDRs setup page. The command line options have a higher priority and substitute the menu settings. The command line settings are: - -i --int= The server network - interface - e.g: eth0, wlan1 etc. - If given option '-a' must - be absent. - -a
--address=
The server IPv4 address. - If given option '-i' must - be absent. - -p --port= The server port - Supported ports: - 0 (auto detect) - 49152-65535 (user defined) - -d --autodetect Force auto detection - Use this option to - overwrite the setup menu - options. - -v --verbose Increase verbosity level - The more v options the - higher the output level + -i --int= The server network + interface + e.g: eth0, wlan1 etc. + If given option '-a' must + be absent. + -a
--address=
The server IPv4 address. + If given option '-i' must + be absent. + -p --port= The server port + Supported ports: + 0 (auto detect) + 49152-65535 (user defined) + -d --autodetect Force auto detection + Use this option to + overwrite the setup menu + options. + -v --verbose Increase verbosity level + The more v options the + higher the output level + --dbdir= The directory in which the + metadata database is stored + --httpdir= The directory where the + http documents are located The verbose option can be more than once. With each option the verbosity level will be increased. The maximum level is 5. Further options are silently ignored. @@ -87,6 +92,7 @@ devices. If not, please report this as a bug on the project homepage or send an email to the developers of this plugin with the full device description and, if applicable, the errors thrown by the media player device and/or the server. + Dependencies: This plugin is tested with and requires the following libraries to work: @@ -114,3 +120,10 @@ are explained. I appreciate, if you help making the plugin better. If you find any project related errors or missing features, please open a new ticket at the plugin website with a detailed description of what you want or what happened. + + +Patching the libupnp: + +If you have a DLNA compliant device such as TVs or streaming clients, you may +require a patched version of libupnp. You can download the patch on the project +website. \ No newline at end of file diff --git a/common.cpp b/common.cpp index f32f9b2..513317d 100644 --- a/common.cpp +++ b/common.cpp @@ -7,18 +7,7 @@ #include #include "common.h" -#include "misc/config.h" - -DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts" }; -DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = { "AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts" }; -DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO = { "MPEG_TS_SD_EU_ISO", "video/mpeg" }; -DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO = { "AVC_TS_HD_EU_ISO", "video/mpeg" }; -DLNAProfile DLNA_PROFILE_MPEG1_L3 = { "MP3", "audio/mpeg" }; - -DLNAIconProfile DLNA_ICON_JPEG_SM_24 = { "image/jpeg", 48, 48, 24 }; -DLNAIconProfile DLNA_ICON_JPEG_LRG_24 = { "image/jpeg", 120, 120, 24 }; -DLNAIconProfile DLNA_ICON_PNG_SM_24A = { "image/png", 48, 48, 24 }; -DLNAIconProfile DLNA_ICON_PNG_LRG_24A = { "image/png", 120, 120, 24 }; +#include "config.h" #define MESSAGE_SIZE 256 diff --git a/common.h b/common.h index ae368b2..6b0d676 100644 --- a/common.h +++ b/common.h @@ -8,7 +8,7 @@ #ifndef _COMMON_H #define _COMMON_H -#include "misc/util.h" +#include "util.h" #include #include #include @@ -65,9 +65,6 @@ #define OUT #define INOUT -//#define DEBUG -//#define WITH_WINDOWS_MEDIA - #define TOSTRING(s) #s #define FALSE 0 @@ -79,7 +76,7 @@ * Translation with gettext() */ #ifndef _ -#define _(s) tr(s) +#define _(s) gettext(s) #endif #define KB(i) i*1024 @@ -92,6 +89,17 @@ #define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL #define prop(s) substr(s, 0, strchr(s,'@')-s) +#ifdef WITHOUT_AUDIO + #define WITHOUT_RADIO + #define WITHOUT_CUSTOM_AUDIO +#endif + +#ifdef WITHOUT_VIDEO + #define WITHOUT_TV + #define WITHOUT_RECORDS + #define WITHOUT_CUSTOM_VIDEO +#endif + void message(int level, const char* File, int Line, const char* Format, ...) __attribute__ ((format (printf, 4, 5))); /**************************************************** @@ -100,10 +108,11 @@ void message(int level, const char* File, int Line, const char* Format, ...) __a * ****************************************************/ -#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr" -#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts" -#define VDR_MAX_FILES_PER_RECORDING 65535 -#define VDR_FILENAME_BUFSIZE 2048 +//#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr" +//#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts" +#define VDR_MAX_FILES_PER_TSRECORDING 65535 +#define VDR_MAX_FILES_PER_PESRECORDING 255 +//#define VDR_FILENAME_BUFSIZE 2048 /**************************************************** * @@ -119,7 +128,7 @@ void message(int level, const char* File, int Line, const char* Format, ...) __a * string in the main file "upnp.c" as well to avoid errors with the makefile */ #define PLUGIN_VERSION_MAJOR 0 #define PLUGIN_VERSION_MINOR 0 -#define PLUGIN_VERSION_MICRO 1 +#define PLUGIN_VERSION_MICRO 2 /* The plugin version as dot-separated string */ #define PLUGIN_VERSION VERSION_STR(PLUGIN_VERSION_MAJOR, \ PLUGIN_VERSION_MINOR, \ @@ -189,10 +198,10 @@ void message(int level, const char* File, int Line, const char* Format, ...) __a #define VERBOSE_EPG_UPDATES 3 ///< show information on EPG changes #define VERBOSE_WEBSERVER 2 ///< print actions done by the webserver #define VERBOSE_MODIFICATIONS 2 ///< show modifications to objects or anything else -#define VERBOSE_METADATA 3 ///< print additional metadata information +#define VERBOSE_METADATA 4 ///< print additional metadata information #define VERBOSE_CUSTOM_OUTPUT 5 ///< everything else... #define VERBOSE_PARSERS 5 ///< print the parsers output -#define VERBOSE_BUFFERS 5 ///< print the buffer output +#define VERBOSE_BUFFERS 4 ///< print the buffer output #define VERBOSE_CDS 2 ///< print messages from the content directory #define VERBOSE_CMS 2 ///< print messages from the connection manager #define VERBOSE_OBJECTS 3 ///< print messages related to objects @@ -222,11 +231,13 @@ void message(int level, const char* File, int Line, const char* Format, ...) __a * ****************************************************/ -#define SETUP_SERVER_ENABLED "ServerEnabled" -#define SETUP_SERVER_INT "ServerInt" -#define SETUP_SERVER_PORT "ServerPort" -#define SETUP_SERVER_AUTO "ServerAutoDetect" -#define SETUP_SERVER_ADDRESS "ServerAddress" +#define SETUP_SERVER_ENABLED "Server.Enabled" +#define SETUP_SERVER_INT "Server.Int" +#define SETUP_SERVER_PORT "Server.Port" +#define SETUP_SERVER_AUTO "Server.AutoDetect" +#define SETUP_SERVER_ADDRESS "Server.Address" +#define SETUP_WEBSERVER_DIR "Webserver.Directory" +#define SETUP_DATABASE_DIR "Database.Directory" /* The server port range where the server interacts with clients */ #define SERVER_MIN_PORT 49152 @@ -269,7 +280,7 @@ enum UPNP_RESOURCE_TYPES { ****************************************************/ #define UPNP_XMLNS_UPNP "urn:schemas-upnp-org:metadata-1-0/upnp/" -#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite" +#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" #define UPNP_XMLNS_DLNA_META "urn:schemas-dlna-org:metadata-1-0/" #define UPNP_XMLNS_UPNP_DEV "urn:schemas-upnp-org:device-1-0" #define UPNP_XMLNS_DLNA_DEV "urn:schemas-dlna-org:device-1-0" @@ -290,7 +301,7 @@ enum UPNP_RESOURCE_TYPES { #define UPNP_DIR_EVENT "/event" #define UPNP_DIR_XML "/xml" #define UPNP_DIR_SHARES "/shares" -#define UPNP_DIR_PRESENTATION "/web" +#define UPNP_DIR_PRESENTATION "/http" #define UPNP_DIR_ICONS "/icons" /**************************************************** @@ -410,10 +421,11 @@ enum UPNP_WEB_METHODS { #define UPNP_PROP_DLNA_CONTAINERTYPE "dlna:container" #define UPNP_DIDL_SKELETON "" + "xmlns:dlna=\"" UPNP_XMLNS_DLNA_META "\">"\ + "" /**************************************************** * @@ -723,7 +735,7 @@ enum UPnPWriteStatus { #define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 ///< (Link Protection) currently not used #define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 ///< (Link Protection) currently not used -#define DLNA_FLAGS_PLUGIN_SUPPORT DLNA_FLAG_BYTE_BASED_SEEK | \ +#define DLNA_SUPPORTED_FLAGS DLNA_FLAG_BYTE_BASED_SEEK | \ DLNA_FLAG_SN_INCREASE | \ DLNA_FLAG_STREAMING_TRANSFER | \ DLNA_FLAG_BACKGROUND_TRANSFER | \ diff --git a/database/database.cpp b/database/database.cpp index e47dcbf..c58294d 100644 --- a/database/database.cpp +++ b/database/database.cpp @@ -12,6 +12,7 @@ #include "../common.h" #include "object.h" #include "../upnp.h" +#include "config.h" cSQLiteDatabase* cSQLiteDatabase::mInstance = NULL; @@ -160,7 +161,8 @@ bool cRow::fetchColumn(char** Column, char** Value){ int cSQLiteDatabase::initialize(){ int ret; - cString File = cString::sprintf("%s/%s", cPluginUpnp::getConfigDirectory(), SQLITE_DB_FILE); + const char* dbdir = (cUPnPConfig::get()->mDatabaseFolder) ? cUPnPConfig::get()->mDatabaseFolder : cPluginUpnp::getConfigDirectory(); + cString File = cString::sprintf("%s/%s", dbdir, SQLITE_DB_FILE); if((ret = sqlite3_open(File, &this->mDatabase))){ ERROR("Unable to open database file %s (Error code: %d)!", *File, ret); sqlite3_close(this->mDatabase); diff --git a/database/database.h b/database/database.h deleted file mode 100644 index 5bb595f..0000000 --- a/database/database.h +++ /dev/null @@ -1,1024 +0,0 @@ -/* - * File: database.h - * Author: savop - * - * Created on 3. September 2009, 22:20 - */ - -#ifndef _DATABASE_H -#define _DATABASE_H - -#include -#include -#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 { - 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/database/metadata.cpp b/database/metadata.cpp index 91c512f..2bfa2d1 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -12,7 +12,7 @@ #include "resources.h" #include "metadata.h" #include "../common.h" -#include "../misc/search.h" +#include "search.h" #include #include #include @@ -49,14 +49,18 @@ bool cMediaDatabase::init(){ ERROR("Initializing of database failed."); return false; } +#ifndef WITHOUT_TV if(this->loadChannels()){ ERROR("Loading channels failed"); return false; } +#endif +#ifndef WITHOUT_RECORDS if(this->loadRecordings()){ ERROR("Loading records failed"); return false; } +#endif return true; } @@ -195,58 +199,65 @@ int cMediaDatabase::prepareDatabase(){ cUPnPClassContainer* Root = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _(PLUGIN_SHORT_NAME)); Root->setID(0); if(this->mFactory->saveObject(Root)) return -1; - - cClass VideoClass = { UPNP_CLASS_VIDEO, true }; - cClass AudioClass = { UPNP_CLASS_AUDIO, true }; - cClass VideoBCClass = { UPNP_CLASS_VIDEOBC, true }; - cClass AudioBCClass = { UPNP_CLASS_AUDIOBC, true }; - + +#ifndef WITHOUT_VIDEO cUPnPClassContainer* Video = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Video")); Video->setID(1); Root->addObject(Video); + cClass VideoClass = { UPNP_CLASS_VIDEO, true }; Video->addSearchClass(VideoClass); Video->setSearchable(true); if(this->mFactory->saveObject(Video)) return -1; - +#endif +#ifndef WITHOUT_AUDIO cUPnPClassContainer* Audio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Audio")); Audio->setID(2); Root->addObject(Audio); + cClass AudioClass = { UPNP_CLASS_AUDIO, true }; Audio->addSearchClass(AudioClass); Audio->setSearchable(true); if(this->mFactory->saveObject(Audio)) return -1; - +#endif +#ifndef WITHOUT_TV cUPnPClassContainer* TV = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("TV")); TV->setID(3); TV->setContainerType(DLNA_CONTAINER_TUNER); TV->setSearchable(true); + cClass VideoBCClass = { UPNP_CLASS_VIDEOBC, true }; TV->addSearchClass(VideoBCClass); Video->addObject(TV); if(this->mFactory->saveObject(TV)) return -1; - +#endif +#ifndef WITHOUT_RECORDS cUPnPClassContainer* Records = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Records")); Records->setID(4); Video->addObject(Records); Records->addSearchClass(VideoClass); Records->setSearchable(true); if(this->mFactory->saveObject(Records)) return -1; - +#endif +#ifndef WITHOUT_RADIO cUPnPClassContainer* Radio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Radio")); Radio->setID(5); Audio->addObject(Radio); + cClass AudioBCClass = { UPNP_CLASS_AUDIOBC, true }; Radio->addSearchClass(AudioBCClass); Radio->setSearchable(true); if(this->mFactory->saveObject(Radio)) return -1; - +#endif +#ifndef WITHOUT_CUSTOM_VIDEOS cUPnPClassContainer* CustomVideos = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("User videos")); CustomVideos->setID(6); Video->addObject(CustomVideos); CustomVideos->addSearchClass(VideoClass); CustomVideos->setSearchable(true); if(this->mFactory->saveObject(CustomVideos)) return -1; +#endif } return 0; } +#ifndef WITHOUT_TV int cMediaDatabase::loadChannels(){ MESSAGE(VERBOSE_LIVE_TV ,"Loading channels"); cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); @@ -317,6 +328,70 @@ int cMediaDatabase::loadChannels(){ return 0; } +void cMediaDatabase::updateChannelEPG(){ + cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); + if(TV){ + // Iterating channels + MESSAGE(VERBOSE_EPG_UPDATES, "Getting schedule..."); + cSchedulesLock SchedulesLock; + const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); + + cList* List = TV->getObjectList(); + MESSAGE(VERBOSE_EPG_UPDATES, "TV folder has %d items", List->Count()); + for(cUPnPClassVideoBroadcast* ChannelItem = (cUPnPClassVideoBroadcast*)List->First(); + ChannelItem; + ChannelItem = (cUPnPClassVideoBroadcast*)List->Next(ChannelItem) + ){ + MESSAGE(VERBOSE_EPG_UPDATES, "Find channel by number %d", ChannelItem->getChannelNr()); + cChannel* Channel = Channels.GetByNumber(ChannelItem->getChannelNr()); + + if(!Channel){ + continue; + } + else { + MESSAGE(VERBOSE_EPG_UPDATES, "Found channel with ID %s", *Channel->GetChannelID().ToString()); + + const cSchedule* Schedule = Schedules->GetSchedule(Channel); + const cEvent* Event = Schedule?Schedule->GetPresentEvent():NULL; + if(Event){ + + time_t LastEPGChange = Event->StartTime(); + time_t LastObjectChange = ChannelItem->modified(); + + MESSAGE(VERBOSE_EPG_UPDATES, "Last event start: %s", ctime(&LastEPGChange)); + MESSAGE(VERBOSE_EPG_UPDATES, "Last object modification: %s", ctime(&LastObjectChange)); + if(LastEPGChange >= LastObjectChange){ + MESSAGE(VERBOSE_EPG_UPDATES, "Updating details"); + + if(Event){ + ChannelItem->setTitle(Event->Title()?Event->Title():Channel->Name()); + ChannelItem->setLongDescription(Event->Description()); + ChannelItem->setDescription(Event->ShortText()); + } + else { + ChannelItem->setTitle(Channel->Name()); + ChannelItem->setLongDescription(NULL); + ChannelItem->setDescription(NULL); + } + + this->mFactory->saveObject(ChannelItem); + } + else { + MESSAGE(VERBOSE_EPG_UPDATES, "Channel did not change"); + } + } + else { + MESSAGE(VERBOSE_EPG_UPDATES, "No EPG data"); + ChannelItem->setTitle(Channel->Name()); + ChannelItem->setLongDescription(NULL); + ChannelItem->setDescription(NULL); + } + } + } + } +} +#endif +#ifndef WITHOUT_RECORDS int cMediaDatabase::loadRecordings(){ MESSAGE(VERBOSE_RECORDS, "Loading recordings"); cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); @@ -344,7 +419,7 @@ int cMediaDatabase::loadRecordings(){ MESSAGE(VERBOSE_RECORDS, "Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); - MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()); + MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()?RecInfo->Title():Recording->Name()); MovieItem->setDescription(RecInfo->ShortText()); MovieItem->setLongDescription(RecInfo->Description()); MovieItem->setStorageMedium(UPNP_STORAGE_HDD); @@ -380,6 +455,7 @@ int cMediaDatabase::loadRecordings(){ } return 0; } +#endif void cMediaDatabase::Action(){ time_t LastEPGUpdate = 0; @@ -395,63 +471,6 @@ void cMediaDatabase::Action(){ } } -void cMediaDatabase::updateChannelEPG(){ - cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); - if(TV){ - // Iterating channels - MESSAGE(VERBOSE_EPG_UPDATES, "Getting schedule..."); - cSchedulesLock SchedulesLock; - const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); - - cList* List = TV->getObjectList(); - MESSAGE(VERBOSE_EPG_UPDATES, "TV folder has %d items", List->Count()); - for(cUPnPClassVideoBroadcast* ChannelItem = (cUPnPClassVideoBroadcast*)List->First(); - ChannelItem; - ChannelItem = (cUPnPClassVideoBroadcast*)List->Next(ChannelItem) - ){ - MESSAGE(VERBOSE_EPG_UPDATES, "Find channel by number %d", ChannelItem->getChannelNr()); - cChannel* Channel = Channels.GetByNumber(ChannelItem->getChannelNr()); - MESSAGE(VERBOSE_EPG_UPDATES, "Found channel with ID %s", *Channel->GetChannelID().ToString()); - - const cSchedule* Schedule = Schedules->GetSchedule(Channel); - const cEvent* Event = Schedule?Schedule->GetPresentEvent():NULL; - if(Event){ - - time_t LastEPGChange = Event->StartTime(); - time_t LastObjectChange = ChannelItem->modified(); - - MESSAGE(VERBOSE_EPG_UPDATES, "Last event start: %s", ctime(&LastEPGChange)); - MESSAGE(VERBOSE_EPG_UPDATES, "Last object modification: %s", ctime(&LastObjectChange)); - if(LastEPGChange >= LastObjectChange){ - MESSAGE(VERBOSE_EPG_UPDATES, "Updating details"); - - if(Event){ - ChannelItem->setTitle(Event->Title()?Event->Title():Channel->Name()); - ChannelItem->setLongDescription(Event->Description()); - ChannelItem->setDescription(Event->ShortText()); - } - else { - ChannelItem->setTitle(Channel->Name()); - ChannelItem->setLongDescription(NULL); - ChannelItem->setDescription(NULL); - } - - this->mFactory->saveObject(ChannelItem); - } - else { - MESSAGE(VERBOSE_EPG_UPDATES, "Channel did not change"); - } - } - else { - MESSAGE(VERBOSE_EPG_UPDATES, "No EPG data"); - ChannelItem->setTitle(Channel->Name()); - ChannelItem->setLongDescription(NULL); - ChannelItem->setDescription(NULL); - } - } - } -} - int cMediaDatabase::browse( OUT cUPnPResultSet** Results, IN const char* ID, diff --git a/database/metadata.h b/database/metadata.h deleted file mode 100644 index 4868231..0000000 --- a/database/metadata.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * File: metadata.h - * Author: savop - * - * Created on 28. Mai 2009, 21:14 - */ - -#ifndef _METADATA_H -#define _METADATA_H - -#include -#include -#include -#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* mObjects; - cSQLiteDatabase* mDatabase; - cUPnPObjectID mLastInsertObjectID; - cUPnPObjectID getNextObjectID(); - void cacheObject(cUPnPClassObject* Object); - int prepareDatabase(); - int loadChannels(); - int loadRecordings(); - void updateChannelEPG(); - void updateRecordings(); - 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/database/object.cpp b/database/object.cpp index 5ab355d..71dfe63 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -18,46 +18,6 @@ #include "../common.h" #include "resources.h" -cUPnPResource::cUPnPResource(){ - this->mBitrate = 0; - this->mBitsPerSample = 0; - this->mColorDepth = 0; - this->mDuration = NULL; - this->mImportURI = NULL; - this->mNrAudioChannels = 0; - this->mObjectID = 0; - this->mProtocolInfo = NULL; - this->mResolution = NULL; - this->mResource = NULL; - this->mResourceID = 0; - this->mSampleFrequency = 0; - this->mSize = 0; - this->mContentType = NULL; -} - -time_t cUPnPResource::getLastModification() const { - time_t Time; - const cRecording* Recording; - const cEvent* Event; - switch(this->mResourceType){ - case UPNP_RESOURCE_CHANNEL: - case UPNP_RESOURCE_URL: - Time = time(NULL); - break; - case UPNP_RESOURCE_RECORDING: - Recording = Recordings.GetByName(this->mResource); - Event = (Recording)?Recording->Info()->GetEvent():NULL; - Time = (Event)?Event->EndTime():time(NULL); - break; - case UPNP_RESOURCE_FILE: - //break; - default: - ERROR("Invalid resource type. This resource might be broken"); - Time = -1; - } - return Time; -} - static int CompareUPnPObjects(const void *a, const void *b){ const cUPnPClassObject *la = *(const cUPnPClassObject **)a; const cUPnPClassObject *lb = *(const cUPnPClassObject **)b; diff --git a/database/object.h b/database/object.h deleted file mode 100644 index 9c2c133..0000000 --- a/database/object.h +++ /dev/null @@ -1,1728 +0,0 @@ -/* - * 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 "../misc/util.h" -#include -#include -#include -#include -#include - -/** - * 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); } -}; - -/** - * UPnP Resource - * - * This contains all details about a resource - */ -class cUPnPResource : public cListObject { - friend class cUPnPResourceMediator; - friend class cUPnPResources; - friend class cAudioVideoDetector; -private: - unsigned int mResourceID; - cUPnPObjectID mObjectID; - 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 cUPnPObjectMediator; -class cUPnPContainerMediator; -class cUPnPClassContainer; - -/** - * 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 { -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* mResources; ///< The resources of this object - cHash* 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* 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* 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 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* 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 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 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* 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* 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 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/database/resources.cpp b/database/resources.cpp index 646560a..d0ca481 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -7,10 +7,49 @@ #include #include -#include "../upnpcomponents/dlna.h" +#include "upnp/dlna.h" #include #include "resources.h" -#include "../misc/avdetector.h" +#include "avdetector.h" + +cUPnPResource::cUPnPResource(){ + this->mBitrate = 0; + this->mBitsPerSample = 0; + this->mColorDepth = 0; + this->mDuration = NULL; + this->mImportURI = NULL; + this->mNrAudioChannels = 0; + this->mProtocolInfo = NULL; + this->mResolution = NULL; + this->mResource = NULL; + this->mResourceID = 0; + this->mSampleFrequency = 0; + this->mSize = 0; + this->mContentType = NULL; +} + +time_t cUPnPResource::getLastModification() const { + time_t Time; + const cRecording* Recording; + const cEvent* Event; + switch(this->mResourceType){ + case UPNP_RESOURCE_CHANNEL: + case UPNP_RESOURCE_URL: + Time = time(NULL); + break; + case UPNP_RESOURCE_RECORDING: + Recording = Recordings.GetByName(this->mResource); + Event = (Recording)?Recording->Info()->GetEvent():NULL; + Time = (Event)?Event->EndTime():time(NULL); + break; + case UPNP_RESOURCE_FILE: + //break; + default: + ERROR("Invalid resource type. This resource might be broken"); + Time = -1; + } + return Time; +} cUPnPResources* cUPnPResources::mInstance = NULL; @@ -125,7 +164,7 @@ int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* Resource->mImportURI = NULL; Resource->mColorDepth = 0; Object->addResource(Resource); - this->mMediator->saveResource(Resource); + this->mMediator->saveResource(Object, Resource); this->mResources->Add(Resource, Resource->getID()); delete Detector; @@ -178,7 +217,7 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel Resource->mImportURI = NULL; Resource->mColorDepth = 0; Object->addResource(Resource); - this->mMediator->saveResource(Resource); + this->mMediator->saveResource(Object, Resource); this->mResources->Add(Resource, Resource->getID()); delete Detector; @@ -208,10 +247,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ } cString Column = NULL, Value = NULL; while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(SQLITE_COL_OBJECTID, Column)){ - Resource->mObjectID = *Value?atoi(Value):-1; - } - else if(!strcasecmp(SQLITE_COL_PROTOCOLINFO, Column)){ + if(!strcasecmp(SQLITE_COL_PROTOCOLINFO, Column)){ Resource->mProtocolInfo = Value; } else if(!strcasecmp(SQLITE_COL_RESOURCE, Column)){ @@ -251,7 +287,7 @@ cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ return Resource; } -int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ +int cUPnPResourceMediator::saveResource(cUPnPClassObject* Object, cUPnPResource* Resource){ cString Format = "UPDATE %s SET %s=%Q," "%s=%Q," @@ -270,7 +306,7 @@ int cUPnPResourceMediator::saveResource(cUPnPResource* Resource){ if(this->mDatabase->execStatement(Format, SQLITE_TABLE_RESOURCES, - SQLITE_COL_OBJECTID, *Resource->mObjectID, + SQLITE_COL_OBJECTID, *Object->getID(), SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo, SQLITE_COL_RESOURCE, *Resource->mResource, SQLITE_COL_SIZE, Resource->mSize, @@ -310,7 +346,6 @@ cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int return NULL; } Resource->mResourceID = (unsigned int)this->mDatabase->getLastInsertRowID(); - Resource->mObjectID = Object->getID(); Resource->mResource = ResourceFile; Resource->mProtocolInfo = ProtocolInfo; Resource->mContentType = ContentType; diff --git a/database/resources.h b/database/resources.h deleted file mode 100644 index 8f7fa86..0000000 --- a/database/resources.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * 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 -#include - -class cUPnPResourceMediator; -class cMediaDatabase; - -/** - * 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* 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(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/misc/avdetector.cpp b/misc/avdetector.cpp deleted file mode 100644 index bb1c9c8..0000000 --- a/misc/avdetector.cpp +++ /dev/null @@ -1,270 +0,0 @@ -/* - * File: avdetector.cpp - * Author: savop - * - * Created on 26. Oktober 2009, 13:01 - */ - -#include "avdetector.h" -#include - -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->init(); -} - -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(){ - 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"); - } - } - } - } - 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 { - - if((ret = this->analyseFormat(FormatCtx))<0){ - ERROR("AVDetector: Error while analysing format"); - return ret; - } - 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; - } - - return 0; - } - } -} - -int cAudioVideoDetector::analyseFormat(AVFormatContext* FormatCtx){ - if(!FormatCtx) return -1; - - this->mSize = FormatCtx->file_size; - this->mDuration = FormatCtx->duration; - - MESSAGE(VERBOSE_METADATA, "Format properties: %lld and %lld Bytes", this->mDuration, this->mSize); - - AVMetadataTag* Tag = NULL; - - while((Tag=av_metadata_get(FormatCtx->metadata,"",Tag,AV_METADATA_IGNORE_SUFFIX))){ - MESSAGE(VERBOSE_METADATA, "%s: %s", Tag->key, Tag->value); - } - - return 0; -} - -int cAudioVideoDetector::analyseVideo(AVFormatContext* FormatCtx) -{ -// // Register avformat - - unsigned int i; int videoStream = -1; - - AVCodecContext *CodecCtx = NULL; - for(i = 0; i < FormatCtx->nb_streams; i++){ - if(FormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO){ - videoStream = i; - break; - } - } - if(videoStream == -1){ - ERROR("AVDetector: No video stream found"); - return 1; - } - - CodecCtx = FormatCtx->streams[videoStream]->codec; - - AVCodec* Codec = avcodec_find_decoder(CodecCtx->codec_id); - - this->mWidth = CodecCtx->width; - this->mHeight = CodecCtx->height; - this->mBitrate = CodecCtx->bit_rate; - this->mSampleFrequency = CodecCtx->sample_rate; - this->mBitsPerSample = CodecCtx->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){ - - unsigned int i; int audioStream = -1; - - AVCodecContext *CodecCtx = NULL; - for(i = 0; i < FormatCtx->nb_streams; i++){ - if(FormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO){ - audioStream = i; - break; - } - } - if(audioStream == -1){ - ERROR("AVDetector: No audio stream found"); - return 1; - } - - CodecCtx = FormatCtx->streams[audioStream]->codec; - AVCodec* Codec = avcodec_find_decoder(CodecCtx->codec_id); - - this->mNrAudioChannels = CodecCtx->channels; - - const char* codecName = (Codec)?Codec->name:"unknown"; - - MESSAGE(VERBOSE_METADATA, "AVDetector: %s-stream at %d bit/s", codecName, CodecCtx->bit_rate); - return 0; - -} - diff --git a/misc/avdetector.h b/misc/avdetector.h deleted file mode 100644 index 33b3298..0000000 --- a/misc/avdetector.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * File: avdetector.h - * Author: savop - * - * Created on 26. Oktober 2009, 13:02 - */ - -#ifndef _AVDETECTOR_H -#define _AVDETECTOR_H - -#include "../database/object.h" -#include -#include - -extern "C" { -#include -#include -} - -/** - * 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); - int analyseFormat(AVFormatContext* FormatCtx); - int detectDLNAProfile(); - 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; } -}; - -#endif /* _AVDETECTOR_H */ - diff --git a/misc/config.cpp b/misc/config.cpp index 1fa0ccb..10ed166 100644 --- a/misc/config.cpp +++ b/misc/config.cpp @@ -10,8 +10,11 @@ #include #include "config.h" #include "../common.h" +#include "../upnp.h" cUPnPConfig::cUPnPConfig(){ + this->mDatabaseFolder = NULL; + this->mHTTPFolder = NULL; this->mParsedArgs = NULL; this->mInterface = NULL; this->mAddress = NULL; @@ -42,10 +45,13 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ {"port", required_argument, NULL, 'p'}, {"autodetect", no_argument, NULL, 'd'}, {"verbose", no_argument, NULL, 'v'}, + {"httpdir", required_argument, NULL, 0}, + {"dbdir", required_argument, NULL, 0}, {0, 0, 0, 0} }; - int c = 0; + int c = 0; int index = -1; + struct option* opt = NULL; // Check if anything went wrong by setting 'success' to false // As there are multiple tests you may get a faulty behavior @@ -60,7 +66,7 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ bool addExcistent = false; static int verbose = 0; - while((c = getopt_long(argc, argv, "i:a:p:dv",long_options, NULL)) != -1){ + while((c = getopt_long(argc, argv, "i:a:p:dv",long_options, &index)) != -1){ switch(c){ case 'i': if(addExcistent) { ERROR("Address given but must be absent!"); return false; } @@ -86,7 +92,15 @@ bool cUPnPConfig::processArgs(int argc, char* argv[]){ case 'v': cUPnPConfig::verbosity++; verbose++; - WARNING("Verbosity level: %i ", verbose); + break; + case 0: + opt = &long_options[index]; + if(!strcasecmp("httpdir", opt->name)){ + success = this->parseSetup(SETUP_WEBSERVER_DIR, optarg) && success; + } + else if(!strcasecmp("dbdir", opt->name)){ + success = this->parseSetup(SETUP_DATABASE_DIR, optarg) && success; + } break; default: return false; @@ -111,6 +125,8 @@ bool cUPnPConfig::parseSetup(const char *Name, const char *Value) else if (!strcasecmp(Name, SETUP_SERVER_INT)) this->mInterface = strdup0(Value); // (Value) ? strn0cpy(this->mInterface, Value, strlen(this->mInterface)) : NULL; else if (!strcasecmp(Name, SETUP_SERVER_ADDRESS)) this->mAddress = strdup0(Value); //(Value) ? strn0cpy(this->mAddress, Value, strlen(this->mAddress)) : NULL; else if (!strcasecmp(Name, SETUP_SERVER_PORT)) this->mPort = atoi(Value); + else if (!strcasecmp(Name, SETUP_WEBSERVER_DIR)) this->mHTTPFolder = strdup0(Value); + else if (!strcasecmp(Name, SETUP_DATABASE_DIR)) this->mDatabaseFolder = strdup0(Value); else return false; this->mParsedArgs = cString::sprintf("%s%s",*this->mParsedArgs,Name); diff --git a/misc/config.h b/misc/config.h deleted file mode 100644 index 40ae6f7..0000000 --- a/misc/config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * File: config.h - * Author: savop - * - * Created on 15. August 2009, 13:03 - */ - -#ifndef _CONFIG_H -#define _CONFIG_H - -#include -#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 -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/misc/menusetup.h b/misc/menusetup.h deleted file mode 100644 index 4e32efc..0000000 --- a/misc/menusetup.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * File: menusetup.h - * Author: savop - * - * Created on 19. April 2009, 16:50 - */ - -#ifndef _CMENUSETUPUPNP_H -#define _CMENUSETUPUPNP_H - -#include -#include "../server/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/misc/search.h b/misc/search.h deleted file mode 100644 index ef162b1..0000000 --- a/misc/search.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * File: search.h - * Author: savop - * - * Created on 27. August 2009, 21:21 - */ - -#ifndef _SEARCH_H -#define _SEARCH_H - -#include -#include -#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 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* mCriteriaList; - bool parseSort(const char* Sort); - void pushProperty(const char* Property); - void pushDirection(const char Direction); - cList* 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* 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/misc/util.h b/misc/util.h deleted file mode 100644 index e5bc061..0000000 --- a/misc/util.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * File: util.h - * Author: savop - * - * Created on 21. Mai 2009, 21:25 - */ - -#ifndef _UTIL_H -#define _UTIL_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#if 0 -} -#endif -/** - * 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/receiver/filehandle.cpp b/receiver/filehandle.cpp deleted file mode 100644 index bc24f53..0000000 --- a/receiver/filehandle.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * File: filehandle.cpp - * Author: savop - * - * Created on 15. Oktober 2009, 10:49 - */ - -#include "filehandle.h" \ No newline at end of file diff --git a/receiver/filehandle.h b/receiver/filehandle.h deleted file mode 100644 index 1dc57bf..0000000 --- a/receiver/filehandle.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * File: filehandle.h - * Author: savop - * - * Created on 15. Oktober 2009, 10:49 - */ - -#ifndef _FILEHANDLE_H -#define _FILEHANDLE_H - -#include -#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/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 8ca560f..a43d197 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -125,14 +125,18 @@ void cLiveReceiver::Action(void){ } int cLiveReceiver::read(char* buf, size_t buflen){ - int bytesRead; + int bytesRead = 0; if(!this->IsAttached()) bytesRead = -1; else { int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; // Wait until the buffer size is at least half the requested buffer length - while((unsigned)this->mOutputBuffer->Available() < (buflen / 2) ){ + + double MinBufSize = buflen * RECEIVER_MIN_BUFFER_FILLAGE/100; + int Available = 0; + while((double)(Available = this->mOutputBuffer->Available()) < MinBufSize){ WARNING("Too few data, waiting..."); + WARNING("Only %d bytes available, need %10f more bytes.", Available, (double)(MinBufSize-Available)); cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ MESSAGE(VERBOSE_LIVE_TV, "Lost device..."); diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h deleted file mode 100644 index 92fe140..0000000 --- a/receiver/livereceiver.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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 -#include -#include - -#define RECEIVER_WAIT_ON_NODATA 50 // 50 ms -#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s - -/** - * 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/receiver/recplayer.cpp b/receiver/recplayer.cpp index 954c9c8..8bf73d4 100644 --- a/receiver/recplayer.cpp +++ b/receiver/recplayer.cpp @@ -21,27 +21,31 @@ cRecordingPlayer *cRecordingPlayer::newInstance(cRecording* Recording){ return Player; } cRecordingPlayer::~cRecordingPlayer() { - delete this->mOffsets; + delete this->mRecordingFile; + delete [] this->mLastOffsets; } -cRecordingPlayer::cRecordingPlayer(cRecording *Recording) { +cRecordingPlayer::cRecordingPlayer(cRecording *Recording) : mRecording(Recording) { MESSAGE(VERBOSE_SDK, "Created Recplayer"); - this->mFile = NULL; - this->mTotalLenght = 0; - this->mRecording = Recording; - this->mOffsets = new off_t[VDR_MAX_FILES_PER_RECORDING]; - this->mOffset = 0; - this->mIndex = 1; - + + this->mRecordingFile = new cFileName(this->mRecording->FileName(), false, false, this->mRecording->IsPesRecording()); + this->mLastOffsets = new off_t[((this->mRecording->IsPesRecording())?VDR_MAX_FILES_PER_PESRECORDING:VDR_MAX_FILES_PER_TSRECORDING)+1]; + this->scanLastOffsets(); } void cRecordingPlayer::open(UpnpOpenFileMode){ - this->Scan(); + // Open() does not work?! + this->mCurrentFile = this->mRecordingFile->SetOffset(1); + if(this->mCurrentFile){ + MESSAGE(VERBOSE_RECORDS, "Record player opened"); + } + else { + ERROR("Error while opening record player file"); + } } void cRecordingPlayer::close(){ - delete [] this->mOffsets; - if(this->mFile) fclose(this->mFile); + this->mRecordingFile->Close(); } int cRecordingPlayer::write(char*, size_t){ @@ -50,122 +54,70 @@ int cRecordingPlayer::write(char*, size_t){ } int cRecordingPlayer::read(char* buf, size_t buflen){ - FILE *File; - off_t fileEndOffset = this->mOffsets[this->mIndex]; - if(this->mOffset > fileEndOffset){ - File = this->NextFile(); + if(!this->mCurrentFile){ + ERROR("Current part of record is not open"); + return -1; } - else { - File = this->GetFile(); + MESSAGE(VERBOSE_RECORDS, "Reading %d from record", buflen); + int bytesread = 0; + while((bytesread = this->mCurrentFile->Read(buf, buflen)) == 0){ // EOF, try next file + if(!(this->mCurrentFile = this->mRecordingFile->NextFile())){ + // no more files to read... finished! + break; + } } - // do not read more bytes than the actual file has - size_t bytesToRead = ((fileEndOffset - this->mOffset) < (off_t)buflen)? fileEndOffset - this->mOffset : buflen; - size_t bytesRead = fread((char*)buf, sizeof(char), bytesToRead, File); - - this->mOffset += (off_t)bytesRead; - - return (int)bytesRead; + return bytesread; } int cRecordingPlayer::seek(off_t offset, int origin){ - // Calculate the new offset + if(!this->mCurrentFile){ + ERROR("Current part of record is not open"); + return -1; + } + + MESSAGE(VERBOSE_RECORDS, "Seeking..."); + + off_t relativeOffset; + off_t curpos = this->mCurrentFile->Seek(0, SEEK_CUR); // this should not change anything + int index; + // recalculate the absolute position in the record switch(origin){ - case SEEK_CUR: - if(this->mOffset + offset > this->mTotalLenght){ - ERROR("Can't read behind end of file!"); - return -1; - } - this->mOffset += (off_t)offset; - break; case SEEK_END: - if(offset > 0){ - ERROR("Can't read behind end of file!"); - return -1; - } - this->mOffset = this->mTotalLenght + offset; + offset = this->mLastOffsets[this->mLastFileNumber] + offset; + break; + case SEEK_CUR: + offset = this->mLastOffsets[this->mRecordingFile->Number()-1] + curpos + offset; break; case SEEK_SET: - if(offset > this->mTotalLenght){ - ERROR("Can't read behind end of file!"); - return -1; - } - this->mOffset = (off_t)offset; + // Nothing to change break; default: - ERROR("Unknown seek mode (%d)!", origin); + ERROR("Seek operation invalid"); return -1; } - // Seek to the very first file; - this->SeekInFile(1,0); - off_t fileEndOffset = this->mOffsets[this->mIndex]; - // Spin until the new offset is in range of a specific file - while(this->mOffset > (fileEndOffset = this->mOffsets[this->mIndex])){ - // If its not possible to switch to next file, there was an error - if(!this->NextFile()){ - ERROR("Offset %lld not in the range of a file!", offset); - return -1; + // finally, we can seek + // TODO: binary search + for(index = 1; this->mLastOffsets[index]; index++){ + if(this->mLastOffsets[index-1] <= offset && offset <= this->mLastOffsets[index]){ + relativeOffset = offset - this->mLastOffsets[index-1]; + break; } } - off_t relativeOffset = - this->mOffset - (this->mOffsets[this->mIndex-1]) - ? this->mOffsets[this->mIndex-1] - : 0; - if(!this->SeekInFile(this->mIndex, relativeOffset)){ - ERROR("Cannot set offset!"); + if(!(this->mCurrentFile = this->mRecordingFile->SetOffset(index, relativeOffset))){ + // seeking failed!!! should never happen. + this->mCurrentFile = this->mRecordingFile->SetOffset(1); return -1; } - return 0; -} -void cRecordingPlayer::Scan(){ - MESSAGE(VERBOSE_RECORDS, "Scanning video files..."); - // Reset the offsets - int i = 1; - while(this->mOffsets[i++]) this->mOffsets[i] = 0; - MESSAGE(VERBOSE_RECORDS, "Offsets reseted."); - - i = 0; - FILE *File; - while((File = this->GetFile(i))){ - if(VDR_MAX_FILES_PER_RECORDING < i+1){ - ERROR("Maximum file offsets exceeded!"); - break; - } - fseek(File, 0, SEEK_END); - off_t offset = ftell(File); - MESSAGE(VERBOSE_RECORDS, "File %d has its last offset at %lld", i, offset); - this->mOffsets[i+1] = this->mOffsets[i] + offset; - this->mTotalLenght = this->mOffsets[i+1]; - i++; - } + return 0; } -FILE *cRecordingPlayer::GetFile(int Index){ - // No Index given: set current index - if(Index == 0) Index = this->mIndex; - // Index not changed: return current file - if(this->mIndex == Index && this->mFile) return this->mFile; - - // Index changed: close open file and open new file - if(this->mFile) fclose(this->mFile); - char *filename = new char[VDR_FILENAME_BUFSIZE]; - snprintf(filename, VDR_FILENAME_BUFSIZE, VDR_RECORDFILE_PATTERN_TS, this->mRecording->FileName(), Index ); - MESSAGE(VERBOSE_BUFFERS, "Filename: %s", filename); - this->mFile = NULL; - if(this->mFile = fopen(filename, "r")){ - this->mIndex = Index; - return this->mFile; +void cRecordingPlayer::scanLastOffsets(){ + // rewind + this->mCurrentFile = this->mRecordingFile->SetOffset(1); + for(int i = 1; (this->mCurrentFile = this->mRecordingFile->NextFile()); i++){ + this->mLastOffsets[i] = this->mLastOffsets[i-1] + this->mCurrentFile->Seek(0, SEEK_END); + this->mLastFileNumber = this->mRecordingFile->Number(); } - return NULL; -} - -FILE *cRecordingPlayer::NextFile(void){ - return this->GetFile(this->mIndex++); -} - -int cRecordingPlayer::SeekInFile(int Index, off_t Offset){ - FILE *File = this->GetFile(Index); - fseek(File, Offset, SEEK_SET); - return ftell(File); } diff --git a/receiver/recplayer.h b/receiver/recplayer.h deleted file mode 100644 index a2e69ac..0000000 --- a/receiver/recplayer.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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 - -/** - * 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 : 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 Scan(void); - cRecordingPlayer(cRecording *Recording); - FILE* GetFile(int Index = 0); - FILE* NextFile(void); - int SeekInFile(int Index, off_t Offset); - cRecording *mRecording; - off_t* mOffsets; - off_t mOffset; - off_t mTotalLenght; - int mIndex; - FILE *mFile; -}; - -#endif /* _RECPLAYER_H */ - diff --git a/server/server.cpp b/server/server.cpp index d98c78b..56bf442 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -11,11 +11,11 @@ #include #include #include "server.h" -#include "../misc/util.h" -#include "../misc/config.h" +#include "util.h" +#include "config.h" #include "../common.h" -#include "../upnpcomponents/dlna.h" -#include "../database/object.h" +#include "upnp/dlna.h" +#include "object.h" /**************************************************** * @@ -104,8 +104,9 @@ bool cUPnPServer::init(void){ MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Setting maximum packet size for SOAP requests"); UpnpSetMaxContentLength(UPNP_SOAP_MAX_LEN); + const char* httpdir = (cUPnPConfig::get()->mHTTPFolder) ? cUPnPConfig::get()->mHTTPFolder : cPluginUpnp::getConfigDirectory(); //set the root directory of the webserver - cString WebserverRootDir = cString::sprintf("%s%s", cPluginUpnp::getConfigDirectory(), UPNP_WEB_SERVER_ROOT_DIR); + cString WebserverRootDir = cString::sprintf("%s%s", httpdir, UPNP_WEB_SERVER_ROOT_DIR); MESSAGE(VERBOSE_SDK, "Set web server root dir: %s", *WebserverRootDir ); this->mWebServer = cUPnPWebServer::getInstance(WebserverRootDir); diff --git a/server/server.h b/server/server.h deleted file mode 100644 index c2a0e9a..0000000 --- a/server/server.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - * File: server.h - * Author: savop - * - * Created on 19. April 2009, 17:42 - */ - -#ifndef _SERVER_H -#define _SERVER_H - -#include -#include -#include -#include -#include "../misc/util.h" -#include "../common.h" -#include "../upnpcomponents/upnpwebserver.h" -#include "../database/metadata.h" -#include "../upnpcomponents/connectionmanager.h" -#include "../upnpcomponents/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/upnp.cpp b/upnp.cpp index 1f8f4e4..e454b1d 100644 --- a/upnp.cpp +++ b/upnp.cpp @@ -8,12 +8,12 @@ #include #include "upnp.h" -#include "misc/menusetup.h" -#include "misc/config.h" +#include "menusetup.h" +#include "config.h" cCondWait DatabaseLocker; -static const char *VERSION = "0.0.1"; +static const char *VERSION = "0.0.2"; static const char *DESCRIPTION = PLUGIN_DESCRIPTION; const char* cPluginUpnp::mConfigDirectory = NULL; @@ -49,30 +49,34 @@ const char *cPluginUpnp::CommandLineHelp(void) // Return a string that describes all known command line options. cString cmdHelp; - cmdHelp = cString::sprintf( + cmdHelp = cString::sprintf(_( " 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 --int= The server network\n" - " interface\n" - " e.g: eth0, wlan1 etc.\n" - " If given option '-a' must\n" - " be absent.\n" - " -a
--address=
The server IPv4 address.\n" - " If given option '-i' must\n" - " be absent.\n" - " -p --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", + " -i --int= The server network\n" + " interface\n" + " e.g: eth0, wlan1 etc.\n" + " If given option '-a' must\n" + " be absent.\n" + " -a
--address=
The server IPv4 address.\n" + " If given option '-i' must\n" + " be absent.\n" + " -p --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= The directory in which the\n" + " metadata database is stored\n" + " --httpdir= The directory where the\n" + " http documents are located\n"), 0, SERVER_MIN_PORT, SERVER_MAX_PORT diff --git a/upnp.h b/upnp.h index ab1b04a..45c7c22 100644 --- a/upnp.h +++ b/upnp.h @@ -11,7 +11,7 @@ #include #include #include "common.h" -#include "server/server.h" +#include "server.h" class cUPnPServer; diff --git a/upnpcomponents/connectionmanager.cpp b/upnpcomponents/connectionmanager.cpp deleted file mode 100644 index e0d9203..0000000 --- a/upnpcomponents/connectionmanager.cpp +++ /dev/null @@ -1,393 +0,0 @@ -/* - * File: connectionmanager.cpp - * Author: savop - * - * Created on 21. August 2009, 18:35 - */ - -#include "upnpservice.h" -#include -#include -#include -#include -#include "connectionmanager.h" -#include "dlna.h" - -cVirtualConnection::cVirtualConnection() : mRcsID(-1) {} - -cConnectionManager::cConnectionManager(UpnpDevice_Handle DeviceHandle) : cUpnpService(DeviceHandle) { - this->mVirtualConnections = new cList; - 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( - " \ - %s \ - \ - ", - 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( - " \ - %s \ - ", - 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( - "\ - %s\ - %s\ - %d\ - %s\ - %d\ - %d\ - %s\ - ", - 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/upnpcomponents/connectionmanager.h b/upnpcomponents/connectionmanager.h deleted file mode 100644 index 4aa25f3..0000000 --- a/upnpcomponents/connectionmanager.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * File: connectionmanager.h - * Author: savop - * - * Created on 21. August 2009, 18:35 - */ - -#ifndef _CONNECTIONMANAGER_H -#define _CONNECTIONMANAGER_H - -#include "upnpservice.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 Connection Manager Service 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* mVirtualConnections; - cString mSupportedProtocols; -}; - -#endif /* _CONNECTIONMANAGER_H */ - diff --git a/upnpcomponents/contentdirectory.cpp b/upnpcomponents/contentdirectory.cpp deleted file mode 100644 index 494b638..0000000 --- a/upnpcomponents/contentdirectory.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* - * File: contentdirectory.cpp - * Author: savop - * - * Created on 21. August 2009, 16:12 - */ - -#include -#include -#include "contentdirectory.h" -#include "../common.h" -#include "../misc/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( - " \ - %s \ - %d \ - %d \ - %d \ - ", - 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( - " \ - %d \ - ", - 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( - " \ - %s \ - ", - 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( - " \ - %s \ - ", - 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/upnpcomponents/contentdirectory.h b/upnpcomponents/contentdirectory.h deleted file mode 100644 index 7fb4bb9..0000000 --- a/upnpcomponents/contentdirectory.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * File: contentdirectory.h - * Author: savop - * - * Created on 21. August 2009, 16:12 - */ - -#ifndef _CONTENTDIRECTORY_H -#define _CONTENTDIRECTORY_H - -#include -#include "upnpservice.h" -#include "../database/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 Content Directory Service 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/upnpcomponents/dlna.cpp b/upnpcomponents/dlna.cpp deleted file mode 100644 index c8bb8a9..0000000 --- a/upnpcomponents/dlna.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/* - * File: dlna.cpp - * Author: savop - * - * Created on 18. April 2009, 23:27 - */ - -#include -#include -#include "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 = new cList; - this->init(); -} - -cDlna::~cDlna() { - delete this->mRegisteredProfiles; -} - - -void cDlna::init(void){ - this->registerMainProfiles(); -} - -void cDlna::registerProfile(DLNAProfile* Profile, int Op, const char* Ps, int Ci, unsigned int Flags){ - cRegisteredProfile *RegisteredProfile = new cRegisteredProfile(); - RegisteredProfile->Profile = Profile; - RegisteredProfile->Operation = Op; - RegisteredProfile->PlaySpeeds = Ps; - RegisteredProfile->Conversion = Ci; - RegisteredProfile->PrimaryFlags = Flags; - this->mRegisteredProfiles->Add(RegisteredProfile); -} - -void cDlna::registerMainProfiles(){ - this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); - this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); - this->registerProfile(&DLNA_PROFILE_MPEG_TS_SD_EU_ISO, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); - this->registerProfile(&DLNA_PROFILE_AVC_TS_HD_EU_ISO, -1, NULL, -1, DLNA_FLAGS_PLUGIN_SUPPORT); -} - -const char* cDlna::getSupportedProtocols(){ - cString Protocols; - cRegisteredProfile* Profile; - for(Profile = this->mRegisteredProfiles->First(); Profile; Profile = this->mRegisteredProfiles->Next(Profile)){ - Protocols = cString::sprintf("%s%s%s",(*Protocols)?*Protocols:"",(*Protocols)?",":"",this->getRegisteredProtocolInfoString(Profile)); - } - return Protocols; -} - -const char* cDlna::getProtocolInfo(DLNAProfile *Prof){ - cRegisteredProfile* Profile; - for(Profile = this->mRegisteredProfiles->First(); Profile && Profile->Profile != Prof; Profile = this->mRegisteredProfiles->Next(Profile)){} - if(Profile){ - return this->getRegisteredProtocolInfoString(Profile); - } - return NULL; -} - -const char* cDlna::getRegisteredProtocolInfoString(cRegisteredProfile *Profile){ - cString DLNA4thField = NULL; - DLNA4thField = cString::sprintf("DLNA.ORG_PN=%s", Profile->Profile->ID); - if(Profile->Operation != -1) - DLNA4thField = cString::sprintf("%s;DLNA.ORG_OP=%d",*DLNA4thField,Profile->Operation); - if(Profile->PlaySpeeds != NULL) - DLNA4thField = cString::sprintf("%s;DLNA.ORG_PS=%s",*DLNA4thField,Profile->PlaySpeeds); - if(Profile->Conversion != -1) - DLNA4thField = cString::sprintf("%s;DLNA.ORG_CI=%d",*DLNA4thField,Profile->Conversion); - if(Profile->PrimaryFlags != 0) - DLNA4thField = cString::sprintf("%s;DLNA.ORG_FLAGS=%.8x%.24x",*DLNA4thField,Profile->PrimaryFlags,0); - - char* Protocol = strdup(cString::sprintf("http-get:*:%s:%s", Profile->Profile->mime, *DLNA4thField)); - return Protocol; -} - -const char* cDlna::getDeviceDescription(const char* URLBase){ - cString description = cString::sprintf( - " \ - \ - \ - 1 \ - 0 \ - \ - %s \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - <%s:X_DLNADOC>%s \ - \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - \ - ", - 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/upnpcomponents/dlna.h b/upnpcomponents/dlna.h deleted file mode 100644 index 44ed3c4..0000000 --- a/upnpcomponents/dlna.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * File: dlna.h - * Author: savop - * - * Created on 18. April 2009, 23:27 - */ - -#ifndef _DLNA_H -#define _DLNA_H - -#include "../common.h" -#include -#include - -class cDlna; - -/** - * Registered DLNA profile - * - * This class contains information about a certain registered profile - * like play speeds or flags - */ -class cRegisteredProfile : public cListObject { - friend class cDlna; -private: - DLNAProfile* Profile; - int Operation; - const char* PlaySpeeds; - int Conversion; - int PrimaryFlags; -public: - cRegisteredProfile(){}; - virtual ~cRegisteredProfile(){}; -}; - -/** - * 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 - 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 - ); - /** - * Registeres all known DLNA profiles - * - * Registeres all well known DLNA profiles with its known options - */ - void registerMainProfiles(); - /** - * 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 - ); -private: - const char* getRegisteredProtocolInfoString(cRegisteredProfile *Profile); - cDlna(); - void init(void); - static cDlna* mInstance; - cList* mRegisteredProfiles; -}; - -#endif /* _DLNA_H */ - diff --git a/upnpcomponents/upnpservice.cpp b/upnpcomponents/upnpservice.cpp deleted file mode 100644 index fc24cca..0000000 --- a/upnpcomponents/upnpservice.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * File: upnpservice.cpp - * Author: savop - * - * Created on 21. August 2009, 18:38 - */ - -#include "upnpservice.h" -#include "../common.h" -#include "../misc/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 diff --git a/upnpcomponents/upnpservice.h b/upnpcomponents/upnpservice.h deleted file mode 100644 index df74d9b..0000000 --- a/upnpcomponents/upnpservice.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * File: upnpservice.h - * Author: savop - * - * Created on 21. August 2009, 18:38 - */ - -#ifndef _UPNPSERVICE_H -#define _UPNPSERVICE_H - -#include - -/** - * 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/upnpcomponents/upnpwebserver.cpp b/upnpcomponents/upnpwebserver.cpp deleted file mode 100644 index b192cd9..0000000 --- a/upnpcomponents/upnpwebserver.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/* - * File: upnpwebserver.cpp - * Author: savop - * - * Created on 30. Mai 2009, 18:13 - */ - -#include -#include -#include -#include -#include "upnpwebserver.h" -#include "../server/server.h" -#include "../receiver/livereceiver.h" -#include "../receiver/recplayer.h" -#include "../misc/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); - } - } - } - 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: - // 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/upnpcomponents/upnpwebserver.h b/upnpcomponents/upnpwebserver.h deleted file mode 100644 index 0a49cf9..0000000 --- a/upnpcomponents/upnpwebserver.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * File: upnpwebserver.h - * Author: savop - * - * Created on 30. Mai 2009, 18:13 - */ - -#ifndef _UPNPWEBSERVER_H -#define _UPNPWEBSERVER_H - -#include "../common.h" -#include - -/** - * 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 Intel SDK 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 buflen 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 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 - * - * @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/web/icons/upnpIconLrg.jpeg b/web/icons/upnpIconLrg.jpeg deleted file mode 100755 index 6421267..0000000 Binary files a/web/icons/upnpIconLrg.jpeg and /dev/null differ diff --git a/web/icons/upnpIconLrg.png b/web/icons/upnpIconLrg.png deleted file mode 100755 index d93e7c0..0000000 Binary files a/web/icons/upnpIconLrg.png and /dev/null differ diff --git a/web/icons/upnpIconSm.jpeg b/web/icons/upnpIconSm.jpeg deleted file mode 100755 index b163f05..0000000 Binary files a/web/icons/upnpIconSm.jpeg and /dev/null differ diff --git a/web/icons/upnpIconSm.png b/web/icons/upnpIconSm.png deleted file mode 100755 index d4320f4..0000000 Binary files a/web/icons/upnpIconSm.png and /dev/null differ diff --git a/web/xml/cds_scpd.xml b/web/xml/cds_scpd.xml deleted file mode 100644 index dff4252..0000000 --- a/web/xml/cds_scpd.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - -1 -0 - - - -GetSearchCapabilities - - -SearchCaps -out -SearchCapabilities - - - - -GetSortCapabilities - - -SortCaps -out -SortCapabilities - - - - -GetSystemUpdateID - - -Id -out -SystemUpdateID - - - - -Browse - - -ObjectID -in -A_ARG_TYPE_ObjectID - - -BrowseFlag -in -A_ARG_TYPE_BrowseFlag - - -Filter -in -A_ARG_TYPE_Filter - - -StartingIndex -in -A_ARG_TYPE_Index - - -RequestedCount -in -A_ARG_TYPE_Count - - -SortCriteria -in -A_ARG_TYPE_SortCriteria - - -Result -out -A_ARG_TYPE_Result - - -NumberReturned -out -A_ARG_TYPE_Count - - -TotalMatches -out -A_ARG_TYPE_Count - - -UpdateID -out -A_ARG_TYPE_UpdateID - - - - - - -A_ARG_TYPE_ObjectID -string - - -A_ARG_TYPE_Result -string - - -A_ARG_TYPE_BrowseFlag -string - -BrowseMetadata -BrowseDirectChildren - - - -A_ARG_TYPE_Filter -string - - -A_ARG_TYPE_SortCriteria -string - - -A_ARG_TYPE_Index -ui4 - - -A_ARG_TYPE_Count -ui4 - - -A_ARG_TYPE_UpdateID -ui4 - - -SearchCapabilities -string - - -SortCapabilities -string - - -SystemUpdateID -ui4 - - - - diff --git a/web/xml/cms_scpd.xml b/web/xml/cms_scpd.xml deleted file mode 100644 index e4071f9..0000000 --- a/web/xml/cms_scpd.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - 1 - 0 - - - - GetProtocolInfo - - - Source - out - SourceProtocolInfo - - - Sink - out - SinkProtocolInfo - - - - - GetCurrentConnectionIDs - - - ConnectionIDs - out - CurrentConnectionIDs - - - - - GetCurrentConnectionInfo - - - ConnectionID - in - A_ARG_TYPE_ConnectionID - - - RcsID - out - A_ARG_TYPE_RcsID - - - AVTransportID - out - A_ARG_TYPE_AVTransportID - - - ProtocolInfo - out - A_ARG_TYPE_ProtocolInfo - - - PeerConnectionManager - out - A_ARG_TYPE_ConnectionManager - - - PeerConnectionID - out - A_ARG_TYPE_ConnectionID - - - Direction - out - A_ARG_TYPE_Direction - - - Status - out - A_ARG_TYPE_ConnectionStatus - - - - - - - SourceProtocolInfo - string - - - SinkProtocolInfo - string - - - CurrentConnectionIDs - string - - - A_ARG_TYPE_ConnectionStatus - string - - OK - ContentFormatMismatch - InsufficientBandwidth - UnreliableChannel - Unknown - - - - A_ARG_TYPE_ConnectionManager - string - - - A_ARG_TYPE_Direction - string - - Input - Output - - - - A_ARG_TYPE_ProtocolInfo - string - - - A_ARG_TYPE_ConnectionID - i4 - - - A_ARG_TYPE_AVTransportID - i4 - - - A_ARG_TYPE_RcsID - i4 - - - - -- cgit v1.2.3 From 0152f33daffe3fe943d6a134409d02df7ecaa982 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Mon, 25 Jan 2010 11:47:10 +0100 Subject: Fixed small bug which leads to an empty TV folder --- database/resources.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/resources.cpp b/database/resources.cpp index d0ca481..8ff478f 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -184,7 +184,7 @@ int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel cAudioVideoDetector* Detector = new cAudioVideoDetector(Channel); - if(!Detector->detectProperties()){ + if(Detector->detectProperties()){ ERROR("Cannot detect channel properties"); delete Detector; return -1; -- cgit v1.2.3 From 724cb5e3783311f6b8c808852dbe2de59f2399b0 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Mon, 25 Jan 2010 12:10:01 +0100 Subject: Fixed small bug which leads to an empty TV folder --- dlna/avdetector.cpp | 378 ++++ dlna/dlna.cpp | 197 ++ dlna/profiles/aac.cpp | 8 + dlna/profiles/ac3.cpp | 85 + dlna/profiles/amr.cpp | 8 + dlna/profiles/atrac3plus.cpp | 8 + dlna/profiles/container.cpp | 117 ++ dlna/profiles/jpeg.cpp | 11 + dlna/profiles/lpcm.cpp | 8 + dlna/profiles/mpa.cpp | 121 ++ dlna/profiles/mpeg1.cpp | 15 + dlna/profiles/mpeg2.cpp | 216 +++ dlna/profiles/mpeg4_p10.cpp | 148 ++ dlna/profiles/mpeg4_p2.cpp | 129 ++ dlna/profiles/png.cpp | 11 + dlna/profiles/wma.cpp | 8 + dlna/profiles/wmv9.cpp | 8 + doc/Source Code Documentation.zip | Bin 0 -> 1617842 bytes doc/doxygen.err | 0 doc/html/annotated.html | 78 + doc/html/avdetector_8h-source.html | 48 + doc/html/classcAudioVideoDetector-members.html | 34 + doc/html/classcAudioVideoDetector.html | 85 + doc/html/classcConnectionManager-members.html | 40 + doc/html/classcConnectionManager.html | 195 ++ doc/html/classcConnectionManager__coll__graph.map | 2 + doc/html/classcConnectionManager__coll__graph.md5 | 1 + doc/html/classcConnectionManager__coll__graph.png | Bin 0 -> 12806 bytes .../classcConnectionManager__inherit__graph.map | 1 + .../classcConnectionManager__inherit__graph.md5 | 1 + .../classcConnectionManager__inherit__graph.png | Bin 0 -> 7810 bytes doc/html/classcContentDirectory-members.html | 40 + doc/html/classcContentDirectory.html | 205 ++ doc/html/classcContentDirectory__coll__graph.map | 7 + doc/html/classcContentDirectory__coll__graph.md5 | 1 + doc/html/classcContentDirectory__coll__graph.png | Bin 0 -> 42439 bytes .../classcContentDirectory__inherit__graph.map | 1 + .../classcContentDirectory__inherit__graph.md5 | 1 + .../classcContentDirectory__inherit__graph.png | Bin 0 -> 6233 bytes doc/html/classcDlna-members.html | 42 + doc/html/classcDlna.html | 335 ++++ doc/html/classcDlna__coll__graph.map | 0 doc/html/classcDlna__coll__graph.md5 | 1 + doc/html/classcDlna__coll__graph.png | Bin 0 -> 5213 bytes doc/html/classcFileHandle-members.html | 37 + doc/html/classcFileHandle.html | 273 +++ doc/html/classcFileHandle.png | Bin 0 -> 368 bytes doc/html/classcFileHandle__inherit__graph.map | 2 + doc/html/classcFileHandle__inherit__graph.md5 | 1 + doc/html/classcFileHandle__inherit__graph.png | Bin 0 -> 9721 bytes doc/html/classcFilterCriteria-members.html | 33 + doc/html/classcFilterCriteria.html | 73 + doc/html/classcLiveReceiver-members.html | 42 + doc/html/classcLiveReceiver.html | 388 ++++ doc/html/classcLiveReceiver.png | Bin 0 -> 364 bytes doc/html/classcLiveReceiver__coll__graph.map | 1 + doc/html/classcLiveReceiver__coll__graph.md5 | 1 + doc/html/classcLiveReceiver__coll__graph.png | Bin 0 -> 5464 bytes doc/html/classcLiveReceiver__inherit__graph.map | 1 + doc/html/classcLiveReceiver__inherit__graph.md5 | 1 + doc/html/classcLiveReceiver__inherit__graph.png | Bin 0 -> 5464 bytes doc/html/classcMediaDatabase-members.html | 42 + doc/html/classcMediaDatabase.html | 390 ++++ doc/html/classcMediaDatabase__coll__graph.map | 5 + doc/html/classcMediaDatabase__coll__graph.md5 | 1 + doc/html/classcMediaDatabase__coll__graph.png | Bin 0 -> 33669 bytes doc/html/classcMediatorInterface-members.html | 37 + doc/html/classcMediatorInterface.html | 226 +++ .../classcMediatorInterface__inherit__graph.map | 6 + .../classcMediatorInterface__inherit__graph.md5 | 1 + .../classcMediatorInterface__inherit__graph.png | Bin 0 -> 19327 bytes doc/html/classcMenuSetupUPnP-members.html | 36 + doc/html/classcMenuSetupUPnP.html | 151 ++ doc/html/classcMenuSetupUPnP__coll__graph.map | 12 + doc/html/classcMenuSetupUPnP__coll__graph.md5 | 1 + doc/html/classcMenuSetupUPnP__coll__graph.png | Bin 0 -> 83074 bytes doc/html/classcPathParser-members.html | 33 + doc/html/classcPathParser.html | 100 + doc/html/classcPluginUpnp-members.html | 44 + doc/html/classcPluginUpnp.html | 361 ++++ doc/html/classcPluginUpnp__coll__graph.map | 12 + doc/html/classcPluginUpnp__coll__graph.md5 | 1 + doc/html/classcPluginUpnp__coll__graph.png | Bin 0 -> 82300 bytes doc/html/classcRecordingPlayer-members.html | 39 + doc/html/classcRecordingPlayer.html | 284 +++ doc/html/classcRecordingPlayer__coll__graph.map | 1 + doc/html/classcRecordingPlayer__coll__graph.md5 | 1 + doc/html/classcRecordingPlayer__coll__graph.png | Bin 0 -> 5532 bytes doc/html/classcRecordingPlayer__inherit__graph.map | 1 + doc/html/classcRecordingPlayer__inherit__graph.md5 | 1 + doc/html/classcRecordingPlayer__inherit__graph.png | Bin 0 -> 5532 bytes doc/html/classcRegisteredProfile-members.html | 34 + doc/html/classcRegisteredProfile.html | 52 + doc/html/classcRegisteredProfile__coll__graph.map | 1 + doc/html/classcRegisteredProfile__coll__graph.md5 | 1 + doc/html/classcRegisteredProfile__coll__graph.png | Bin 0 -> 3045 bytes doc/html/classcRow-members.html | 36 + doc/html/classcRow.html | 156 ++ doc/html/classcRows-members.html | 34 + doc/html/classcRows.html | 88 + doc/html/classcRows__coll__graph.map | 1 + doc/html/classcRows__coll__graph.md5 | 1 + doc/html/classcRows__coll__graph.png | Bin 0 -> 3061 bytes doc/html/classcSQLiteDatabase-members.html | 43 + doc/html/classcSQLiteDatabase.html | 343 ++++ doc/html/classcSQLiteDatabase__coll__graph.map | 2 + doc/html/classcSQLiteDatabase__coll__graph.md5 | 1 + doc/html/classcSQLiteDatabase__coll__graph.png | Bin 0 -> 10351 bytes doc/html/classcSortCriteria-members.html | 33 + doc/html/classcSortCriteria.html | 82 + doc/html/classcSortCriteria__coll__graph.map | 1 + doc/html/classcSortCriteria__coll__graph.md5 | 1 + doc/html/classcSortCriteria__coll__graph.png | Bin 0 -> 3734 bytes doc/html/classcUPnPClassContainer-members.html | 110 ++ doc/html/classcUPnPClassContainer.html | 897 +++++++++ doc/html/classcUPnPClassContainer__coll__graph.map | 3 + doc/html/classcUPnPClassContainer__coll__graph.md5 | 1 + doc/html/classcUPnPClassContainer__coll__graph.png | Bin 0 -> 28651 bytes .../classcUPnPClassContainer__inherit__graph.map | 1 + .../classcUPnPClassContainer__inherit__graph.md5 | 1 + .../classcUPnPClassContainer__inherit__graph.png | Bin 0 -> 19210 bytes doc/html/classcUPnPClassItem-members.html | 86 + doc/html/classcUPnPClassItem.html | 337 ++++ doc/html/classcUPnPClassItem__coll__graph.map | 2 + doc/html/classcUPnPClassItem__coll__graph.md5 | 1 + doc/html/classcUPnPClassItem__coll__graph.png | Bin 0 -> 19548 bytes doc/html/classcUPnPClassItem__inherit__graph.map | 4 + doc/html/classcUPnPClassItem__inherit__graph.md5 | 1 + doc/html/classcUPnPClassItem__inherit__graph.png | Bin 0 -> 35614 bytes doc/html/classcUPnPClassMovie-members.html | 126 ++ doc/html/classcUPnPClassMovie.html | 331 ++++ doc/html/classcUPnPClassMovie__coll__graph.map | 4 + doc/html/classcUPnPClassMovie__coll__graph.md5 | 1 + doc/html/classcUPnPClassMovie__coll__graph.png | Bin 0 -> 32902 bytes doc/html/classcUPnPClassMovie__inherit__graph.map | 3 + doc/html/classcUPnPClassMovie__inherit__graph.md5 | 1 + doc/html/classcUPnPClassMovie__inherit__graph.png | Bin 0 -> 25190 bytes doc/html/classcUPnPClassObject-members.html | 80 + doc/html/classcUPnPClassObject.html | 1039 +++++++++++ doc/html/classcUPnPClassObject__coll__graph.map | 1 + doc/html/classcUPnPClassObject__coll__graph.md5 | 1 + doc/html/classcUPnPClassObject__coll__graph.png | Bin 0 -> 14875 bytes doc/html/classcUPnPClassObject__inherit__graph.map | 5 + doc/html/classcUPnPClassObject__inherit__graph.md5 | 1 + doc/html/classcUPnPClassObject__inherit__graph.png | Bin 0 -> 48263 bytes .../classcUPnPClassVideoBroadcast-members.html | 132 ++ doc/html/classcUPnPClassVideoBroadcast.html | 446 +++++ .../classcUPnPClassVideoBroadcast__coll__graph.map | 4 + .../classcUPnPClassVideoBroadcast__coll__graph.md5 | 1 + .../classcUPnPClassVideoBroadcast__coll__graph.png | Bin 0 -> 34677 bytes ...asscUPnPClassVideoBroadcast__inherit__graph.map | 3 + ...asscUPnPClassVideoBroadcast__inherit__graph.md5 | 1 + ...asscUPnPClassVideoBroadcast__inherit__graph.png | Bin 0 -> 27404 bytes doc/html/classcUPnPClassVideoItem-members.html | 118 ++ doc/html/classcUPnPClassVideoItem.html | 815 ++++++++ doc/html/classcUPnPClassVideoItem__coll__graph.map | 3 + doc/html/classcUPnPClassVideoItem__coll__graph.md5 | 1 + doc/html/classcUPnPClassVideoItem__coll__graph.png | Bin 0 -> 29140 bytes .../classcUPnPClassVideoItem__inherit__graph.map | 4 + .../classcUPnPClassVideoItem__inherit__graph.md5 | 1 + .../classcUPnPClassVideoItem__inherit__graph.png | Bin 0 -> 35964 bytes doc/html/classcUPnPConfig-members.html | 40 + doc/html/classcUPnPConfig.html | 178 ++ doc/html/classcUPnPConfig__coll__graph.map | 0 doc/html/classcUPnPConfig__coll__graph.md5 | 1 + doc/html/classcUPnPConfig__coll__graph.png | Bin 0 -> 3507 bytes doc/html/classcUPnPContainerMediator-members.html | 46 + doc/html/classcUPnPContainerMediator.html | 240 +++ .../classcUPnPContainerMediator__coll__graph.map | 8 + .../classcUPnPContainerMediator__coll__graph.md5 | 1 + .../classcUPnPContainerMediator__coll__graph.png | Bin 0 -> 50722 bytes ...classcUPnPContainerMediator__inherit__graph.map | 2 + ...classcUPnPContainerMediator__inherit__graph.md5 | 1 + ...classcUPnPContainerMediator__inherit__graph.png | Bin 0 -> 7593 bytes doc/html/classcUPnPItemMediator-members.html | 46 + doc/html/classcUPnPItemMediator.html | 248 +++ doc/html/classcUPnPItemMediator__coll__graph.map | 8 + doc/html/classcUPnPItemMediator__coll__graph.md5 | 1 + doc/html/classcUPnPItemMediator__coll__graph.png | Bin 0 -> 50741 bytes .../classcUPnPItemMediator__inherit__graph.map | 5 + .../classcUPnPItemMediator__inherit__graph.md5 | 1 + .../classcUPnPItemMediator__inherit__graph.png | Bin 0 -> 16957 bytes doc/html/classcUPnPMovieMediator-members.html | 50 + doc/html/classcUPnPMovieMediator.html | 240 +++ doc/html/classcUPnPMovieMediator__coll__graph.map | 10 + doc/html/classcUPnPMovieMediator__coll__graph.md5 | 1 + doc/html/classcUPnPMovieMediator__coll__graph.png | Bin 0 -> 58255 bytes .../classcUPnPMovieMediator__inherit__graph.map | 4 + .../classcUPnPMovieMediator__inherit__graph.md5 | 1 + .../classcUPnPMovieMediator__inherit__graph.png | Bin 0 -> 11924 bytes doc/html/classcUPnPObjectFactory-members.html | 39 + doc/html/classcUPnPObjectFactory.html | 332 ++++ doc/html/classcUPnPObjectFactory__coll__graph.map | 3 + doc/html/classcUPnPObjectFactory__coll__graph.md5 | 1 + doc/html/classcUPnPObjectFactory__coll__graph.png | Bin 0 -> 15735 bytes doc/html/classcUPnPObjectMediator-members.html | 44 + doc/html/classcUPnPObjectMediator.html | 410 ++++ doc/html/classcUPnPObjectMediator__coll__graph.map | 7 + doc/html/classcUPnPObjectMediator__coll__graph.md5 | 1 + doc/html/classcUPnPObjectMediator__coll__graph.png | Bin 0 -> 47043 bytes .../classcUPnPObjectMediator__inherit__graph.map | 6 + .../classcUPnPObjectMediator__inherit__graph.md5 | 1 + .../classcUPnPObjectMediator__inherit__graph.png | Bin 0 -> 19333 bytes doc/html/classcUPnPObjects-members.html | 34 + doc/html/classcUPnPObjects.html | 81 + doc/html/classcUPnPResource-members.html | 50 + doc/html/classcUPnPResource.html | 444 +++++ doc/html/classcUPnPResourceMediator-members.html | 36 + doc/html/classcUPnPResourceMediator.html | 177 ++ .../classcUPnPResourceMediator__coll__graph.map | 3 + .../classcUPnPResourceMediator__coll__graph.md5 | 1 + .../classcUPnPResourceMediator__coll__graph.png | Bin 0 -> 13837 bytes doc/html/classcUPnPResource__coll__graph.map | 1 + doc/html/classcUPnPResource__coll__graph.md5 | 1 + doc/html/classcUPnPResource__coll__graph.png | Bin 0 -> 10453 bytes doc/html/classcUPnPResources-members.html | 39 + doc/html/classcUPnPResources.html | 289 +++ doc/html/classcUPnPResources__coll__graph.map | 4 + doc/html/classcUPnPResources__coll__graph.md5 | 1 + doc/html/classcUPnPResources__coll__graph.png | Bin 0 -> 19388 bytes doc/html/classcUPnPServer-members.html | 48 + doc/html/classcUPnPServer.html | 493 +++++ doc/html/classcUPnPServer__coll__graph.map | 11 + doc/html/classcUPnPServer__coll__graph.md5 | 1 + doc/html/classcUPnPServer__coll__graph.png | Bin 0 -> 74574 bytes .../classcUPnPVideoBroadcastMediator-members.html | 50 + doc/html/classcUPnPVideoBroadcastMediator.html | 240 +++ ...asscUPnPVideoBroadcastMediator__coll__graph.map | 10 + ...asscUPnPVideoBroadcastMediator__coll__graph.md5 | 1 + ...asscUPnPVideoBroadcastMediator__coll__graph.png | Bin 0 -> 58682 bytes ...cUPnPVideoBroadcastMediator__inherit__graph.map | 4 + ...cUPnPVideoBroadcastMediator__inherit__graph.md5 | 1 + ...cUPnPVideoBroadcastMediator__inherit__graph.png | Bin 0 -> 12710 bytes doc/html/classcUPnPVideoItemMediator-members.html | 48 + doc/html/classcUPnPVideoItemMediator.html | 248 +++ .../classcUPnPVideoItemMediator__coll__graph.map | 9 + .../classcUPnPVideoItemMediator__coll__graph.md5 | 1 + .../classcUPnPVideoItemMediator__coll__graph.png | Bin 0 -> 54556 bytes ...classcUPnPVideoItemMediator__inherit__graph.map | 5 + ...classcUPnPVideoItemMediator__inherit__graph.md5 | 1 + ...classcUPnPVideoItemMediator__inherit__graph.png | Bin 0 -> 16876 bytes doc/html/classcUPnPWebServer-members.html | 42 + doc/html/classcUPnPWebServer.html | 396 ++++ doc/html/classcUPnPWebServer__coll__graph.map | 0 doc/html/classcUPnPWebServer__coll__graph.md5 | 1 + doc/html/classcUPnPWebServer__coll__graph.png | Bin 0 -> 3893 bytes doc/html/classcUpnpService-members.html | 38 + doc/html/classcUpnpService.html | 294 +++ doc/html/classcUpnpService__inherit__graph.map | 2 + doc/html/classcUpnpService__inherit__graph.md5 | 1 + doc/html/classcUpnpService__inherit__graph.png | Bin 0 -> 11369 bytes doc/html/classcVirtualConnection-members.html | 32 + doc/html/classcVirtualConnection.html | 45 + doc/html/classes.html | 35 + doc/html/common_8h-source.html | 766 ++++++++ doc/html/config_8h-source.html | 59 + doc/html/connectionmanager_8h-source.html | 95 + doc/html/contentdirectory_8h-source.html | 67 + doc/html/database_8h-source.html | 898 +++++++++ doc/html/dlna_8h-source.html | 95 + doc/html/doxygen.css | 441 +++++ doc/html/doxygen.png | Bin 0 -> 1281 bytes doc/html/filehandle_8h-source.html | 68 + doc/html/files.html | 50 + doc/html/functions.html | 68 + doc/html/functions_0x61.html | 84 + doc/html/functions_0x62.html | 70 + doc/html/functions_0x63.html | 136 ++ doc/html/functions_0x64.html | 85 + doc/html/functions_0x65.html | 74 + doc/html/functions_0x66.html | 70 + doc/html/functions_0x67.html | 234 +++ doc/html/functions_0x68.html | 68 + doc/html/functions_0x69.html | 91 + doc/html/functions_0x6c.html | 70 + doc/html/functions_0x6d.html | 167 ++ doc/html/functions_0x6e.html | 71 + doc/html/functions_0x6f.html | 100 + doc/html/functions_0x70.html | 84 + doc/html/functions_0x72.html | 87 + doc/html/functions_0x73.html | 190 ++ doc/html/functions_0x75.html | 74 + doc/html/functions_0x76.html | 68 + doc/html/functions_0x77.html | 73 + doc/html/functions_0x7e.html | 68 + doc/html/functions_func.html | 82 + doc/html/functions_func_0x62.html | 66 + doc/html/functions_func_0x63.html | 134 ++ doc/html/functions_func_0x64.html | 83 + doc/html/functions_func_0x65.html | 72 + doc/html/functions_func_0x66.html | 68 + doc/html/functions_func_0x67.html | 232 +++ doc/html/functions_func_0x69.html | 84 + doc/html/functions_func_0x6c.html | 68 + doc/html/functions_func_0x6d.html | 66 + doc/html/functions_func_0x6e.html | 69 + doc/html/functions_func_0x6f.html | 98 + doc/html/functions_func_0x70.html | 80 + doc/html/functions_func_0x72.html | 85 + doc/html/functions_func_0x73.html | 186 ++ doc/html/functions_func_0x75.html | 72 + doc/html/functions_func_0x76.html | 66 + doc/html/functions_func_0x77.html | 69 + doc/html/functions_func_0x7e.html | 66 + doc/html/functions_vars.html | 183 ++ doc/html/graph_legend.dot | 22 + doc/html/graph_legend.html | 85 + doc/html/graph_legend.png | Bin 0 -> 4341 bytes doc/html/hierarchy.html | 98 + doc/html/index.html | 25 + doc/html/inherit__graph__0.map | 1 + doc/html/inherit__graph__0.md5 | 1 + doc/html/inherit__graph__0.png | Bin 0 -> 595 bytes doc/html/inherit__graph__1.map | 1 + doc/html/inherit__graph__1.md5 | 1 + doc/html/inherit__graph__1.png | Bin 0 -> 332 bytes doc/html/inherit__graph__10.map | 1 + doc/html/inherit__graph__10.md5 | 1 + doc/html/inherit__graph__10.png | Bin 0 -> 557 bytes doc/html/inherit__graph__11.map | 1 + doc/html/inherit__graph__11.md5 | 1 + doc/html/inherit__graph__11.png | Bin 0 -> 299 bytes doc/html/inherit__graph__12.map | 1 + doc/html/inherit__graph__12.md5 | 1 + doc/html/inherit__graph__12.png | Bin 0 -> 325 bytes doc/html/inherit__graph__13.map | 1 + doc/html/inherit__graph__13.md5 | 1 + doc/html/inherit__graph__13.png | Bin 0 -> 383 bytes doc/html/inherit__graph__14.map | 1 + doc/html/inherit__graph__14.md5 | 1 + doc/html/inherit__graph__14.png | Bin 0 -> 456 bytes doc/html/inherit__graph__15.map | 1 + doc/html/inherit__graph__15.md5 | 1 + doc/html/inherit__graph__15.png | Bin 0 -> 552 bytes doc/html/inherit__graph__16.map | 6 + doc/html/inherit__graph__16.md5 | 1 + doc/html/inherit__graph__16.png | Bin 0 -> 2327 bytes doc/html/inherit__graph__17.map | 1 + doc/html/inherit__graph__17.md5 | 1 + doc/html/inherit__graph__17.png | Bin 0 -> 442 bytes doc/html/inherit__graph__18.map | 1 + doc/html/inherit__graph__18.md5 | 1 + doc/html/inherit__graph__18.png | Bin 0 -> 593 bytes doc/html/inherit__graph__19.map | 1 + doc/html/inherit__graph__19.md5 | 1 + doc/html/inherit__graph__19.png | Bin 0 -> 485 bytes doc/html/inherit__graph__2.map | 1 + doc/html/inherit__graph__2.md5 | 1 + doc/html/inherit__graph__2.png | Bin 0 -> 305 bytes doc/html/inherit__graph__20.map | 1 + doc/html/inherit__graph__20.md5 | 1 + doc/html/inherit__graph__20.png | Bin 0 -> 474 bytes doc/html/inherit__graph__21.map | 1 + doc/html/inherit__graph__21.md5 | 1 + doc/html/inherit__graph__21.png | Bin 0 -> 449 bytes doc/html/inherit__graph__22.map | 1 + doc/html/inherit__graph__22.md5 | 1 + doc/html/inherit__graph__22.png | Bin 0 -> 623 bytes doc/html/inherit__graph__23.map | 1 + doc/html/inherit__graph__23.md5 | 1 + doc/html/inherit__graph__23.png | Bin 0 -> 465 bytes doc/html/inherit__graph__24.map | 1 + doc/html/inherit__graph__24.md5 | 1 + doc/html/inherit__graph__24.png | Bin 0 -> 489 bytes doc/html/inherit__graph__25.map | 1 + doc/html/inherit__graph__25.md5 | 1 + doc/html/inherit__graph__25.png | Bin 0 -> 433 bytes doc/html/inherit__graph__26.map | 3 + doc/html/inherit__graph__26.md5 | 1 + doc/html/inherit__graph__26.png | Bin 0 -> 1401 bytes doc/html/inherit__graph__27.map | 1 + doc/html/inherit__graph__27.md5 | 1 + doc/html/inherit__graph__27.png | Bin 0 -> 515 bytes doc/html/inherit__graph__28.map | 1 + doc/html/inherit__graph__28.md5 | 1 + doc/html/inherit__graph__28.png | Bin 0 -> 533 bytes doc/html/inherit__graph__29.map | 1 + doc/html/inherit__graph__29.md5 | 1 + doc/html/inherit__graph__29.png | Bin 0 -> 491 bytes doc/html/inherit__graph__3.map | 3 + doc/html/inherit__graph__3.md5 | 1 + doc/html/inherit__graph__3.png | Bin 0 -> 1237 bytes doc/html/inherit__graph__30.map | 1 + doc/html/inherit__graph__30.md5 | 1 + doc/html/inherit__graph__30.png | Bin 0 -> 423 bytes doc/html/inherit__graph__4.map | 1 + doc/html/inherit__graph__4.md5 | 1 + doc/html/inherit__graph__4.png | Bin 0 -> 465 bytes doc/html/inherit__graph__5.map | 1 + doc/html/inherit__graph__5.md5 | 1 + doc/html/inherit__graph__5.png | Bin 0 -> 535 bytes doc/html/inherit__graph__6.map | 7 + doc/html/inherit__graph__6.md5 | 1 + doc/html/inherit__graph__6.png | Bin 0 -> 3048 bytes doc/html/inherit__graph__7.map | 1 + doc/html/inherit__graph__7.md5 | 1 + doc/html/inherit__graph__7.png | Bin 0 -> 522 bytes doc/html/inherit__graph__8.map | 1 + doc/html/inherit__graph__8.md5 | 1 + doc/html/inherit__graph__8.png | Bin 0 -> 409 bytes doc/html/inherit__graph__9.map | 1 + doc/html/inherit__graph__9.md5 | 1 + doc/html/inherit__graph__9.png | Bin 0 -> 427 bytes doc/html/inherits.html | 127 ++ doc/html/interfacecFileHandle-members.html | 37 + doc/html/livereceiver_8h-source.html | 78 + doc/html/menusetup_8h-source.html | 70 + doc/html/metadata_8h-source.html | 108 ++ doc/html/object_8h-source.html | 498 +++++ doc/html/recplayer_8h-source.html | 65 + doc/html/resources_8h-source.html | 77 + doc/html/search_8h-source.html | 125 ++ doc/html/server_8h-source.html | 85 + doc/html/structDLNAIconProfile-members.html | 35 + doc/html/structDLNAIconProfile.html | 58 + doc/html/structDLNAProfile-members.html | 33 + doc/html/structDLNAProfile.html | 50 + doc/html/structcClass-members.html | 35 + doc/html/structcClass.html | 108 ++ doc/html/structcSortCrit-members.html | 33 + doc/html/structcSortCrit.html | 50 + doc/html/structcUPnPObjectID-members.html | 52 + doc/html/structcUPnPObjectID.html | 540 ++++++ doc/html/structcUPnPResultSet-members.html | 34 + doc/html/structcUPnPResultSet.html | 54 + doc/html/tab_b.gif | Bin 0 -> 35 bytes doc/html/tab_l.gif | Bin 0 -> 706 bytes doc/html/tab_r.gif | Bin 0 -> 2585 bytes doc/html/tabs.css | 105 ++ doc/html/upnp_8h-source.html | 69 + doc/html/upnpservice_8h-source.html | 71 + doc/html/upnpwebserver_8h-source.html | 72 + doc/html/util_8h-source.html | 79 + doc/latex/FreeSans.ttf | Bin 0 -> 22932 bytes doc/latex/Makefile | 19 + doc/latex/annotated.tex | 49 + doc/latex/classcAudioVideoDetector.tex | 45 + doc/latex/classcConnectionManager.tex | 124 ++ doc/latex/classcConnectionManager__coll__graph.eps | 470 +++++ doc/latex/classcConnectionManager__coll__graph.md5 | 1 + doc/latex/classcConnectionManager__coll__graph.pdf | Bin 0 -> 33189 bytes .../classcConnectionManager__inherit__graph.eps | 358 ++++ .../classcConnectionManager__inherit__graph.md5 | 1 + .../classcConnectionManager__inherit__graph.pdf | Bin 0 -> 32469 bytes doc/latex/classcContentDirectory.tex | 124 ++ doc/latex/classcContentDirectory__coll__graph.eps | 1213 ++++++++++++ doc/latex/classcContentDirectory__coll__graph.md5 | 1 + doc/latex/classcContentDirectory__coll__graph.pdf | Bin 0 -> 37215 bytes .../classcContentDirectory__inherit__graph.eps | 340 ++++ .../classcContentDirectory__inherit__graph.md5 | 1 + .../classcContentDirectory__inherit__graph.pdf | Bin 0 -> 32397 bytes doc/latex/classcDlna.tex | 202 ++ doc/latex/classcDlna__coll__graph.eps | 312 ++++ doc/latex/classcDlna__coll__graph.md5 | 1 + doc/latex/classcDlna__coll__graph.pdf | Bin 0 -> 32004 bytes doc/latex/classcFileHandle.eps | 197 ++ doc/latex/classcFileHandle.pdf | Bin 0 -> 2824 bytes doc/latex/classcFileHandle.tex | 168 ++ doc/latex/classcFileHandle__inherit__graph.eps | 462 +++++ doc/latex/classcFileHandle__inherit__graph.md5 | 1 + doc/latex/classcFileHandle__inherit__graph.pdf | Bin 0 -> 33310 bytes doc/latex/classcFilterCriteria.tex | 43 + doc/latex/classcLiveReceiver.eps | 197 ++ doc/latex/classcLiveReceiver.pdf | Bin 0 -> 2824 bytes doc/latex/classcLiveReceiver.tex | 229 +++ doc/latex/classcLiveReceiver__coll__graph.eps | 355 ++++ doc/latex/classcLiveReceiver__coll__graph.md5 | 1 + doc/latex/classcLiveReceiver__coll__graph.pdf | Bin 0 -> 32430 bytes doc/latex/classcLiveReceiver__inherit__graph.eps | 355 ++++ doc/latex/classcLiveReceiver__inherit__graph.md5 | 1 + doc/latex/classcLiveReceiver__inherit__graph.pdf | Bin 0 -> 32430 bytes doc/latex/classcMediaDatabase.tex | 205 ++ doc/latex/classcMediaDatabase__coll__graph.eps | 1029 +++++++++++ doc/latex/classcMediaDatabase__coll__graph.md5 | 1 + doc/latex/classcMediaDatabase__coll__graph.pdf | Bin 0 -> 35796 bytes doc/latex/classcMediatorInterface.tex | 145 ++ .../classcMediatorInterface__inherit__graph.eps | 710 +++++++ .../classcMediatorInterface__inherit__graph.md5 | 1 + .../classcMediatorInterface__inherit__graph.pdf | Bin 0 -> 33580 bytes doc/latex/classcMenuSetupUPnP.tex | 88 + doc/latex/classcMenuSetupUPnP__coll__graph.eps | 1954 ++++++++++++++++++++ doc/latex/classcMenuSetupUPnP__coll__graph.md5 | 1 + doc/latex/classcMenuSetupUPnP__coll__graph.pdf | Bin 0 -> 40545 bytes doc/latex/classcPathParser.tex | 47 + doc/latex/classcPluginUpnp.tex | 212 +++ doc/latex/classcPluginUpnp__coll__graph.eps | 1942 +++++++++++++++++++ doc/latex/classcPluginUpnp__coll__graph.md5 | 1 + doc/latex/classcPluginUpnp__coll__graph.pdf | Bin 0 -> 40377 bytes doc/latex/classcRecordingPlayer.tex | 175 ++ doc/latex/classcRecordingPlayer__coll__graph.eps | 358 ++++ doc/latex/classcRecordingPlayer__coll__graph.md5 | 1 + doc/latex/classcRecordingPlayer__coll__graph.pdf | Bin 0 -> 32387 bytes .../classcRecordingPlayer__inherit__graph.eps | 358 ++++ .../classcRecordingPlayer__inherit__graph.md5 | 1 + .../classcRecordingPlayer__inherit__graph.pdf | Bin 0 -> 32387 bytes doc/latex/classcRegisteredProfile.tex | 31 + doc/latex/classcRegisteredProfile__coll__graph.eps | 333 ++++ doc/latex/classcRegisteredProfile__coll__graph.md5 | 1 + doc/latex/classcRegisteredProfile__coll__graph.pdf | Bin 0 -> 32163 bytes doc/latex/classcRow.tex | 92 + doc/latex/classcRows.tex | 64 + doc/latex/classcRows__coll__graph.eps | 342 ++++ doc/latex/classcRows__coll__graph.md5 | 1 + doc/latex/classcRows__coll__graph.pdf | Bin 0 -> 31427 bytes doc/latex/classcSQLiteDatabase.tex | 224 +++ doc/latex/classcSQLiteDatabase__coll__graph.eps | 558 ++++++ doc/latex/classcSQLiteDatabase__coll__graph.md5 | 1 + doc/latex/classcSQLiteDatabase__coll__graph.pdf | Bin 0 -> 33163 bytes doc/latex/classcSortCriteria.tex | 52 + doc/latex/classcSortCriteria__coll__graph.eps | 339 ++++ doc/latex/classcSortCriteria__coll__graph.md5 | 1 + doc/latex/classcSortCriteria__coll__graph.pdf | Bin 0 -> 31796 bytes doc/latex/classcUPnPClassContainer.tex | 603 ++++++ .../classcUPnPClassContainer__coll__graph.eps | 793 ++++++++ .../classcUPnPClassContainer__coll__graph.md5 | 1 + .../classcUPnPClassContainer__coll__graph.pdf | Bin 0 -> 34699 bytes .../classcUPnPClassContainer__inherit__graph.eps | 532 ++++++ .../classcUPnPClassContainer__inherit__graph.md5 | 1 + .../classcUPnPClassContainer__inherit__graph.pdf | Bin 0 -> 33227 bytes doc/latex/classcUPnPClassItem.tex | 223 +++ doc/latex/classcUPnPClassItem__coll__graph.eps | 670 +++++++ doc/latex/classcUPnPClassItem__coll__graph.md5 | 1 + doc/latex/classcUPnPClassItem__coll__graph.pdf | Bin 0 -> 33817 bytes doc/latex/classcUPnPClassItem__inherit__graph.eps | 805 ++++++++ doc/latex/classcUPnPClassItem__inherit__graph.md5 | 1 + doc/latex/classcUPnPClassItem__inherit__graph.pdf | Bin 0 -> 34865 bytes doc/latex/classcUPnPClassMovie.tex | 234 +++ doc/latex/classcUPnPClassMovie__coll__graph.eps | 914 +++++++++ doc/latex/classcUPnPClassMovie__coll__graph.md5 | 1 + doc/latex/classcUPnPClassMovie__coll__graph.pdf | Bin 0 -> 35221 bytes doc/latex/classcUPnPClassMovie__inherit__graph.eps | 701 +++++++ doc/latex/classcUPnPClassMovie__inherit__graph.md5 | 1 + doc/latex/classcUPnPClassMovie__inherit__graph.pdf | Bin 0 -> 34250 bytes doc/latex/classcUPnPClassObject.tex | 703 +++++++ doc/latex/classcUPnPClassObject__coll__graph.eps | 550 ++++++ doc/latex/classcUPnPClassObject__coll__graph.md5 | 1 + doc/latex/classcUPnPClassObject__coll__graph.pdf | Bin 0 -> 33364 bytes .../classcUPnPClassObject__inherit__graph.eps | 963 ++++++++++ .../classcUPnPClassObject__inherit__graph.md5 | 1 + .../classcUPnPClassObject__inherit__graph.pdf | Bin 0 -> 35496 bytes doc/latex/classcUPnPClassVideoBroadcast.tex | 308 +++ .../classcUPnPClassVideoBroadcast__coll__graph.eps | 932 ++++++++++ .../classcUPnPClassVideoBroadcast__coll__graph.md5 | 1 + .../classcUPnPClassVideoBroadcast__coll__graph.pdf | Bin 0 -> 35399 bytes ...asscUPnPClassVideoBroadcast__inherit__graph.eps | 719 +++++++ ...asscUPnPClassVideoBroadcast__inherit__graph.md5 | 1 + ...asscUPnPClassVideoBroadcast__inherit__graph.pdf | Bin 0 -> 34400 bytes doc/latex/classcUPnPClassVideoItem.tex | 572 ++++++ .../classcUPnPClassVideoItem__coll__graph.eps | 828 +++++++++ .../classcUPnPClassVideoItem__coll__graph.md5 | 1 + .../classcUPnPClassVideoItem__coll__graph.pdf | Bin 0 -> 34841 bytes .../classcUPnPClassVideoItem__inherit__graph.eps | 805 ++++++++ .../classcUPnPClassVideoItem__inherit__graph.md5 | 1 + .../classcUPnPClassVideoItem__inherit__graph.pdf | Bin 0 -> 34843 bytes doc/latex/classcUPnPConfig.tex | 120 ++ doc/latex/classcUPnPConfig__coll__graph.eps | 303 +++ doc/latex/classcUPnPConfig__coll__graph.md5 | 1 + doc/latex/classcUPnPConfig__coll__graph.pdf | Bin 0 -> 31728 bytes doc/latex/classcUPnPContainerMediator.tex | 153 ++ .../classcUPnPContainerMediator__coll__graph.eps | 1323 +++++++++++++ .../classcUPnPContainerMediator__coll__graph.md5 | 1 + .../classcUPnPContainerMediator__coll__graph.pdf | Bin 0 -> 37485 bytes ...classcUPnPContainerMediator__inherit__graph.eps | 414 +++++ ...classcUPnPContainerMediator__inherit__graph.md5 | 1 + ...classcUPnPContainerMediator__inherit__graph.pdf | Bin 0 -> 32290 bytes doc/latex/classcUPnPItemMediator.tex | 161 ++ doc/latex/classcUPnPItemMediator__coll__graph.eps | 1323 +++++++++++++ doc/latex/classcUPnPItemMediator__coll__graph.md5 | 1 + doc/latex/classcUPnPItemMediator__coll__graph.pdf | Bin 0 -> 37488 bytes .../classcUPnPItemMediator__inherit__graph.eps | 636 +++++++ .../classcUPnPItemMediator__inherit__graph.md5 | 1 + .../classcUPnPItemMediator__inherit__graph.pdf | Bin 0 -> 33180 bytes doc/latex/classcUPnPMovieMediator.tex | 153 ++ doc/latex/classcUPnPMovieMediator__coll__graph.eps | 1471 +++++++++++++++ doc/latex/classcUPnPMovieMediator__coll__graph.md5 | 1 + doc/latex/classcUPnPMovieMediator__coll__graph.pdf | Bin 0 -> 38031 bytes .../classcUPnPMovieMediator__inherit__graph.eps | 562 ++++++ .../classcUPnPMovieMediator__inherit__graph.md5 | 1 + .../classcUPnPMovieMediator__inherit__graph.pdf | Bin 0 -> 32756 bytes doc/latex/classcUPnPObjectFactory.tex | 199 ++ doc/latex/classcUPnPObjectFactory__coll__graph.eps | 710 +++++++ doc/latex/classcUPnPObjectFactory__coll__graph.md5 | 1 + doc/latex/classcUPnPObjectFactory__coll__graph.pdf | Bin 0 -> 34247 bytes doc/latex/classcUPnPObjectMediator.tex | 262 +++ .../classcUPnPObjectMediator__coll__graph.eps | 1249 +++++++++++++ .../classcUPnPObjectMediator__coll__graph.md5 | 1 + .../classcUPnPObjectMediator__coll__graph.pdf | Bin 0 -> 37137 bytes .../classcUPnPObjectMediator__inherit__graph.eps | 710 +++++++ .../classcUPnPObjectMediator__inherit__graph.md5 | 1 + .../classcUPnPObjectMediator__inherit__graph.pdf | Bin 0 -> 33584 bytes doc/latex/classcUPnPObjects.tex | 39 + doc/latex/classcUPnPResource.tex | 288 +++ doc/latex/classcUPnPResourceMediator.tex | 100 + .../classcUPnPResourceMediator__coll__graph.eps | 652 +++++++ .../classcUPnPResourceMediator__coll__graph.md5 | 1 + .../classcUPnPResourceMediator__coll__graph.pdf | Bin 0 -> 33795 bytes doc/latex/classcUPnPResource__coll__graph.eps | 462 +++++ doc/latex/classcUPnPResource__coll__graph.md5 | 1 + doc/latex/classcUPnPResource__coll__graph.pdf | Bin 0 -> 33162 bytes doc/latex/classcUPnPResources.tex | 173 ++ doc/latex/classcUPnPResources__coll__graph.eps | 838 +++++++++ doc/latex/classcUPnPResources__coll__graph.md5 | 1 + doc/latex/classcUPnPResources__coll__graph.pdf | Bin 0 -> 34585 bytes doc/latex/classcUPnPServer.tex | 318 ++++ doc/latex/classcUPnPServer__coll__graph.eps | 1824 ++++++++++++++++++ doc/latex/classcUPnPServer__coll__graph.md5 | 1 + doc/latex/classcUPnPServer__coll__graph.pdf | Bin 0 -> 39896 bytes doc/latex/classcUPnPVideoBroadcastMediator.tex | 153 ++ ...asscUPnPVideoBroadcastMediator__coll__graph.eps | 1471 +++++++++++++++ ...asscUPnPVideoBroadcastMediator__coll__graph.md5 | 1 + ...asscUPnPVideoBroadcastMediator__coll__graph.pdf | Bin 0 -> 38043 bytes ...cUPnPVideoBroadcastMediator__inherit__graph.eps | 562 ++++++ ...cUPnPVideoBroadcastMediator__inherit__graph.md5 | 1 + ...cUPnPVideoBroadcastMediator__inherit__graph.pdf | Bin 0 -> 32861 bytes doc/latex/classcUPnPVideoItemMediator.tex | 161 ++ .../classcUPnPVideoItemMediator__coll__graph.eps | 1397 ++++++++++++++ .../classcUPnPVideoItemMediator__coll__graph.md5 | 1 + .../classcUPnPVideoItemMediator__coll__graph.pdf | Bin 0 -> 37806 bytes ...classcUPnPVideoItemMediator__inherit__graph.eps | 636 +++++++ ...classcUPnPVideoItemMediator__inherit__graph.md5 | 1 + ...classcUPnPVideoItemMediator__inherit__graph.pdf | Bin 0 -> 33164 bytes doc/latex/classcUPnPWebServer.tex | 229 +++ doc/latex/classcUPnPWebServer__coll__graph.eps | 309 ++++ doc/latex/classcUPnPWebServer__coll__graph.md5 | 1 + doc/latex/classcUPnPWebServer__coll__graph.pdf | Bin 0 -> 32032 bytes doc/latex/classcUpnpService.tex | 180 ++ doc/latex/classcUpnpService__inherit__graph.eps | 444 +++++ doc/latex/classcUpnpService__inherit__graph.md5 | 1 + doc/latex/classcUpnpService__inherit__graph.pdf | Bin 0 -> 33025 bytes doc/latex/classcVirtualConnection.tex | 25 + doc/latex/doxygen.sty | 86 + doc/latex/hierarchy.tex | 67 + doc/latex/refman.tex | 101 + doc/latex/structDLNAIconProfile.tex | 39 + doc/latex/structDLNAProfile.tex | 29 + doc/latex/structcClass.tex | 67 + doc/latex/structcSortCrit.tex | 29 + doc/latex/structcUPnPObjectID.tex | 274 +++ doc/latex/structcUPnPResultSet.tex | 34 + doc/upnpdlna.dox | 1510 +++++++++++++++ http/icons/upnpIconLrg.jpeg | Bin 0 -> 6620 bytes http/icons/upnpIconLrg.png | Bin 0 -> 17309 bytes http/icons/upnpIconSm.jpeg | Bin 0 -> 2416 bytes http/icons/upnpIconSm.png | Bin 0 -> 4769 bytes http/xml/cds_scpd.xml | 145 ++ http/xml/cms_scpd.xml | 133 ++ inc/avdetector.h | 124 ++ inc/config.h | 74 + inc/database.h | 1024 ++++++++++ inc/filehandle.h | 108 ++ inc/livereceiver.h | 105 ++ inc/menusetup.h | 103 ++ inc/metadata.h | 189 ++ inc/object.h | 1576 ++++++++++++++++ inc/profiles.h | 32 + inc/profiles/aac.h | 36 + inc/profiles/ac3.h | 24 + inc/profiles/amr.h | 17 + inc/profiles/atrac3plus.h | 16 + inc/profiles/container.h | 47 + inc/profiles/jpeg.h | 24 + inc/profiles/lpcm.h | 16 + inc/profiles/mpa.h | 25 + inc/profiles/mpeg1.h | 16 + inc/profiles/mpeg2.h | 68 + inc/profiles/mpeg4_p10.h | 153 ++ inc/profiles/mpeg4_p2.h | 80 + inc/profiles/png.h | 22 + inc/profiles/profile_data.h | 213 +++ inc/profiles/wma.h | 18 + inc/profiles/wmv9.h | 24 + inc/recplayer.h | 53 + inc/resources.h | 318 ++++ inc/search.h | 156 ++ inc/server.h | 221 +++ inc/upnp/connectionmanager.h | 99 + inc/upnp/contentdirectory.h | 56 + inc/upnp/dlna.h | 97 + inc/upnp/service.h | 119 ++ inc/util.h | 148 ++ inc/webserver.h | 160 ++ po/de-DE.po | 271 +++ po/de-DE.po~ | 273 +++ server/webserver.cpp | 363 ++++ upnp/connectionmanager.cpp | 393 ++++ upnp/contentdirectory.cpp | 306 +++ upnp/service.cpp | 118 ++ 687 files changed, 81692 insertions(+) create mode 100644 dlna/avdetector.cpp create mode 100644 dlna/dlna.cpp create mode 100644 dlna/profiles/aac.cpp create mode 100644 dlna/profiles/ac3.cpp create mode 100644 dlna/profiles/amr.cpp create mode 100644 dlna/profiles/atrac3plus.cpp create mode 100644 dlna/profiles/container.cpp create mode 100644 dlna/profiles/jpeg.cpp create mode 100644 dlna/profiles/lpcm.cpp create mode 100644 dlna/profiles/mpa.cpp create mode 100644 dlna/profiles/mpeg1.cpp create mode 100644 dlna/profiles/mpeg2.cpp create mode 100644 dlna/profiles/mpeg4_p10.cpp create mode 100644 dlna/profiles/mpeg4_p2.cpp create mode 100644 dlna/profiles/png.cpp create mode 100644 dlna/profiles/wma.cpp create mode 100644 dlna/profiles/wmv9.cpp create mode 100644 doc/Source Code Documentation.zip create mode 100644 doc/doxygen.err create mode 100644 doc/html/annotated.html create mode 100644 doc/html/avdetector_8h-source.html create mode 100644 doc/html/classcAudioVideoDetector-members.html create mode 100644 doc/html/classcAudioVideoDetector.html create mode 100644 doc/html/classcConnectionManager-members.html create mode 100644 doc/html/classcConnectionManager.html create mode 100644 doc/html/classcConnectionManager__coll__graph.map create mode 100644 doc/html/classcConnectionManager__coll__graph.md5 create mode 100644 doc/html/classcConnectionManager__coll__graph.png create mode 100644 doc/html/classcConnectionManager__inherit__graph.map create mode 100644 doc/html/classcConnectionManager__inherit__graph.md5 create mode 100644 doc/html/classcConnectionManager__inherit__graph.png create mode 100644 doc/html/classcContentDirectory-members.html create mode 100644 doc/html/classcContentDirectory.html create mode 100644 doc/html/classcContentDirectory__coll__graph.map create mode 100644 doc/html/classcContentDirectory__coll__graph.md5 create mode 100644 doc/html/classcContentDirectory__coll__graph.png create mode 100644 doc/html/classcContentDirectory__inherit__graph.map create mode 100644 doc/html/classcContentDirectory__inherit__graph.md5 create mode 100644 doc/html/classcContentDirectory__inherit__graph.png create mode 100644 doc/html/classcDlna-members.html create mode 100644 doc/html/classcDlna.html create mode 100644 doc/html/classcDlna__coll__graph.map create mode 100644 doc/html/classcDlna__coll__graph.md5 create mode 100644 doc/html/classcDlna__coll__graph.png create mode 100644 doc/html/classcFileHandle-members.html create mode 100644 doc/html/classcFileHandle.html create mode 100644 doc/html/classcFileHandle.png create mode 100644 doc/html/classcFileHandle__inherit__graph.map create mode 100644 doc/html/classcFileHandle__inherit__graph.md5 create mode 100644 doc/html/classcFileHandle__inherit__graph.png create mode 100644 doc/html/classcFilterCriteria-members.html create mode 100644 doc/html/classcFilterCriteria.html create mode 100644 doc/html/classcLiveReceiver-members.html create mode 100644 doc/html/classcLiveReceiver.html create mode 100644 doc/html/classcLiveReceiver.png create mode 100644 doc/html/classcLiveReceiver__coll__graph.map create mode 100644 doc/html/classcLiveReceiver__coll__graph.md5 create mode 100644 doc/html/classcLiveReceiver__coll__graph.png create mode 100644 doc/html/classcLiveReceiver__inherit__graph.map create mode 100644 doc/html/classcLiveReceiver__inherit__graph.md5 create mode 100644 doc/html/classcLiveReceiver__inherit__graph.png create mode 100644 doc/html/classcMediaDatabase-members.html create mode 100644 doc/html/classcMediaDatabase.html create mode 100644 doc/html/classcMediaDatabase__coll__graph.map create mode 100644 doc/html/classcMediaDatabase__coll__graph.md5 create mode 100644 doc/html/classcMediaDatabase__coll__graph.png create mode 100644 doc/html/classcMediatorInterface-members.html create mode 100644 doc/html/classcMediatorInterface.html create mode 100644 doc/html/classcMediatorInterface__inherit__graph.map create mode 100644 doc/html/classcMediatorInterface__inherit__graph.md5 create mode 100644 doc/html/classcMediatorInterface__inherit__graph.png create mode 100644 doc/html/classcMenuSetupUPnP-members.html create mode 100644 doc/html/classcMenuSetupUPnP.html create mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.map create mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.md5 create mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.png create mode 100644 doc/html/classcPathParser-members.html create mode 100644 doc/html/classcPathParser.html create mode 100644 doc/html/classcPluginUpnp-members.html create mode 100644 doc/html/classcPluginUpnp.html create mode 100644 doc/html/classcPluginUpnp__coll__graph.map create mode 100644 doc/html/classcPluginUpnp__coll__graph.md5 create mode 100644 doc/html/classcPluginUpnp__coll__graph.png create mode 100644 doc/html/classcRecordingPlayer-members.html create mode 100644 doc/html/classcRecordingPlayer.html create mode 100644 doc/html/classcRecordingPlayer__coll__graph.map create mode 100644 doc/html/classcRecordingPlayer__coll__graph.md5 create mode 100644 doc/html/classcRecordingPlayer__coll__graph.png create mode 100644 doc/html/classcRecordingPlayer__inherit__graph.map create mode 100644 doc/html/classcRecordingPlayer__inherit__graph.md5 create mode 100644 doc/html/classcRecordingPlayer__inherit__graph.png create mode 100644 doc/html/classcRegisteredProfile-members.html create mode 100644 doc/html/classcRegisteredProfile.html create mode 100644 doc/html/classcRegisteredProfile__coll__graph.map create mode 100644 doc/html/classcRegisteredProfile__coll__graph.md5 create mode 100644 doc/html/classcRegisteredProfile__coll__graph.png create mode 100644 doc/html/classcRow-members.html create mode 100644 doc/html/classcRow.html create mode 100644 doc/html/classcRows-members.html create mode 100644 doc/html/classcRows.html create mode 100644 doc/html/classcRows__coll__graph.map create mode 100644 doc/html/classcRows__coll__graph.md5 create mode 100644 doc/html/classcRows__coll__graph.png create mode 100644 doc/html/classcSQLiteDatabase-members.html create mode 100644 doc/html/classcSQLiteDatabase.html create mode 100644 doc/html/classcSQLiteDatabase__coll__graph.map create mode 100644 doc/html/classcSQLiteDatabase__coll__graph.md5 create mode 100644 doc/html/classcSQLiteDatabase__coll__graph.png create mode 100644 doc/html/classcSortCriteria-members.html create mode 100644 doc/html/classcSortCriteria.html create mode 100644 doc/html/classcSortCriteria__coll__graph.map create mode 100644 doc/html/classcSortCriteria__coll__graph.md5 create mode 100644 doc/html/classcSortCriteria__coll__graph.png create mode 100644 doc/html/classcUPnPClassContainer-members.html create mode 100644 doc/html/classcUPnPClassContainer.html create mode 100644 doc/html/classcUPnPClassContainer__coll__graph.map create mode 100644 doc/html/classcUPnPClassContainer__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassContainer__coll__graph.png create mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.map create mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.png create mode 100644 doc/html/classcUPnPClassItem-members.html create mode 100644 doc/html/classcUPnPClassItem.html create mode 100644 doc/html/classcUPnPClassItem__coll__graph.map create mode 100644 doc/html/classcUPnPClassItem__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassItem__coll__graph.png create mode 100644 doc/html/classcUPnPClassItem__inherit__graph.map create mode 100644 doc/html/classcUPnPClassItem__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassItem__inherit__graph.png create mode 100644 doc/html/classcUPnPClassMovie-members.html create mode 100644 doc/html/classcUPnPClassMovie.html create mode 100644 doc/html/classcUPnPClassMovie__coll__graph.map create mode 100644 doc/html/classcUPnPClassMovie__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassMovie__coll__graph.png create mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.map create mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.png create mode 100644 doc/html/classcUPnPClassObject-members.html create mode 100644 doc/html/classcUPnPClassObject.html create mode 100644 doc/html/classcUPnPClassObject__coll__graph.map create mode 100644 doc/html/classcUPnPClassObject__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassObject__coll__graph.png create mode 100644 doc/html/classcUPnPClassObject__inherit__graph.map create mode 100644 doc/html/classcUPnPClassObject__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassObject__inherit__graph.png create mode 100644 doc/html/classcUPnPClassVideoBroadcast-members.html create mode 100644 doc/html/classcUPnPClassVideoBroadcast.html create mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.map create mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.png create mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map create mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png create mode 100644 doc/html/classcUPnPClassVideoItem-members.html create mode 100644 doc/html/classcUPnPClassVideoItem.html create mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.map create mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.md5 create mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.png create mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.map create mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.md5 create mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.png create mode 100644 doc/html/classcUPnPConfig-members.html create mode 100644 doc/html/classcUPnPConfig.html create mode 100644 doc/html/classcUPnPConfig__coll__graph.map create mode 100644 doc/html/classcUPnPConfig__coll__graph.md5 create mode 100644 doc/html/classcUPnPConfig__coll__graph.png create mode 100644 doc/html/classcUPnPContainerMediator-members.html create mode 100644 doc/html/classcUPnPContainerMediator.html create mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.map create mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.png create mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPItemMediator-members.html create mode 100644 doc/html/classcUPnPItemMediator.html create mode 100644 doc/html/classcUPnPItemMediator__coll__graph.map create mode 100644 doc/html/classcUPnPItemMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPItemMediator__coll__graph.png create mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPMovieMediator-members.html create mode 100644 doc/html/classcUPnPMovieMediator.html create mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.map create mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.png create mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPObjectFactory-members.html create mode 100644 doc/html/classcUPnPObjectFactory.html create mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.map create mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.md5 create mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.png create mode 100644 doc/html/classcUPnPObjectMediator-members.html create mode 100644 doc/html/classcUPnPObjectMediator.html create mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.map create mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.png create mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPObjects-members.html create mode 100644 doc/html/classcUPnPObjects.html create mode 100644 doc/html/classcUPnPResource-members.html create mode 100644 doc/html/classcUPnPResource.html create mode 100644 doc/html/classcUPnPResourceMediator-members.html create mode 100644 doc/html/classcUPnPResourceMediator.html create mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.map create mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.png create mode 100644 doc/html/classcUPnPResource__coll__graph.map create mode 100644 doc/html/classcUPnPResource__coll__graph.md5 create mode 100644 doc/html/classcUPnPResource__coll__graph.png create mode 100644 doc/html/classcUPnPResources-members.html create mode 100644 doc/html/classcUPnPResources.html create mode 100644 doc/html/classcUPnPResources__coll__graph.map create mode 100644 doc/html/classcUPnPResources__coll__graph.md5 create mode 100644 doc/html/classcUPnPResources__coll__graph.png create mode 100644 doc/html/classcUPnPServer-members.html create mode 100644 doc/html/classcUPnPServer.html create mode 100644 doc/html/classcUPnPServer__coll__graph.map create mode 100644 doc/html/classcUPnPServer__coll__graph.md5 create mode 100644 doc/html/classcUPnPServer__coll__graph.png create mode 100644 doc/html/classcUPnPVideoBroadcastMediator-members.html create mode 100644 doc/html/classcUPnPVideoBroadcastMediator.html create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPVideoItemMediator-members.html create mode 100644 doc/html/classcUPnPVideoItemMediator.html create mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.map create mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.md5 create mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.png create mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.map create mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 create mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.png create mode 100644 doc/html/classcUPnPWebServer-members.html create mode 100644 doc/html/classcUPnPWebServer.html create mode 100644 doc/html/classcUPnPWebServer__coll__graph.map create mode 100644 doc/html/classcUPnPWebServer__coll__graph.md5 create mode 100644 doc/html/classcUPnPWebServer__coll__graph.png create mode 100644 doc/html/classcUpnpService-members.html create mode 100644 doc/html/classcUpnpService.html create mode 100644 doc/html/classcUpnpService__inherit__graph.map create mode 100644 doc/html/classcUpnpService__inherit__graph.md5 create mode 100644 doc/html/classcUpnpService__inherit__graph.png create mode 100644 doc/html/classcVirtualConnection-members.html create mode 100644 doc/html/classcVirtualConnection.html create mode 100644 doc/html/classes.html create mode 100644 doc/html/common_8h-source.html create mode 100644 doc/html/config_8h-source.html create mode 100644 doc/html/connectionmanager_8h-source.html create mode 100644 doc/html/contentdirectory_8h-source.html create mode 100644 doc/html/database_8h-source.html create mode 100644 doc/html/dlna_8h-source.html create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/filehandle_8h-source.html create mode 100644 doc/html/files.html create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_0x61.html create mode 100644 doc/html/functions_0x62.html create mode 100644 doc/html/functions_0x63.html create mode 100644 doc/html/functions_0x64.html create mode 100644 doc/html/functions_0x65.html create mode 100644 doc/html/functions_0x66.html create mode 100644 doc/html/functions_0x67.html create mode 100644 doc/html/functions_0x68.html create mode 100644 doc/html/functions_0x69.html create mode 100644 doc/html/functions_0x6c.html create mode 100644 doc/html/functions_0x6d.html create mode 100644 doc/html/functions_0x6e.html create mode 100644 doc/html/functions_0x6f.html create mode 100644 doc/html/functions_0x70.html create mode 100644 doc/html/functions_0x72.html create mode 100644 doc/html/functions_0x73.html create mode 100644 doc/html/functions_0x75.html create mode 100644 doc/html/functions_0x76.html create mode 100644 doc/html/functions_0x77.html create mode 100644 doc/html/functions_0x7e.html create mode 100644 doc/html/functions_func.html create mode 100644 doc/html/functions_func_0x62.html create mode 100644 doc/html/functions_func_0x63.html create mode 100644 doc/html/functions_func_0x64.html create mode 100644 doc/html/functions_func_0x65.html create mode 100644 doc/html/functions_func_0x66.html create mode 100644 doc/html/functions_func_0x67.html create mode 100644 doc/html/functions_func_0x69.html create mode 100644 doc/html/functions_func_0x6c.html create mode 100644 doc/html/functions_func_0x6d.html create mode 100644 doc/html/functions_func_0x6e.html create mode 100644 doc/html/functions_func_0x6f.html create mode 100644 doc/html/functions_func_0x70.html create mode 100644 doc/html/functions_func_0x72.html create mode 100644 doc/html/functions_func_0x73.html create mode 100644 doc/html/functions_func_0x75.html create mode 100644 doc/html/functions_func_0x76.html create mode 100644 doc/html/functions_func_0x77.html create mode 100644 doc/html/functions_func_0x7e.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/graph_legend.dot create mode 100644 doc/html/graph_legend.html create mode 100644 doc/html/graph_legend.png create mode 100644 doc/html/hierarchy.html create mode 100644 doc/html/index.html create mode 100644 doc/html/inherit__graph__0.map create mode 100644 doc/html/inherit__graph__0.md5 create mode 100644 doc/html/inherit__graph__0.png create mode 100644 doc/html/inherit__graph__1.map create mode 100644 doc/html/inherit__graph__1.md5 create mode 100644 doc/html/inherit__graph__1.png create mode 100644 doc/html/inherit__graph__10.map create mode 100644 doc/html/inherit__graph__10.md5 create mode 100644 doc/html/inherit__graph__10.png create mode 100644 doc/html/inherit__graph__11.map create mode 100644 doc/html/inherit__graph__11.md5 create mode 100644 doc/html/inherit__graph__11.png create mode 100644 doc/html/inherit__graph__12.map create mode 100644 doc/html/inherit__graph__12.md5 create mode 100644 doc/html/inherit__graph__12.png create mode 100644 doc/html/inherit__graph__13.map create mode 100644 doc/html/inherit__graph__13.md5 create mode 100644 doc/html/inherit__graph__13.png create mode 100644 doc/html/inherit__graph__14.map create mode 100644 doc/html/inherit__graph__14.md5 create mode 100644 doc/html/inherit__graph__14.png create mode 100644 doc/html/inherit__graph__15.map create mode 100644 doc/html/inherit__graph__15.md5 create mode 100644 doc/html/inherit__graph__15.png create mode 100644 doc/html/inherit__graph__16.map create mode 100644 doc/html/inherit__graph__16.md5 create mode 100644 doc/html/inherit__graph__16.png create mode 100644 doc/html/inherit__graph__17.map create mode 100644 doc/html/inherit__graph__17.md5 create mode 100644 doc/html/inherit__graph__17.png create mode 100644 doc/html/inherit__graph__18.map create mode 100644 doc/html/inherit__graph__18.md5 create mode 100644 doc/html/inherit__graph__18.png create mode 100644 doc/html/inherit__graph__19.map create mode 100644 doc/html/inherit__graph__19.md5 create mode 100644 doc/html/inherit__graph__19.png create mode 100644 doc/html/inherit__graph__2.map create mode 100644 doc/html/inherit__graph__2.md5 create mode 100644 doc/html/inherit__graph__2.png create mode 100644 doc/html/inherit__graph__20.map create mode 100644 doc/html/inherit__graph__20.md5 create mode 100644 doc/html/inherit__graph__20.png create mode 100644 doc/html/inherit__graph__21.map create mode 100644 doc/html/inherit__graph__21.md5 create mode 100644 doc/html/inherit__graph__21.png create mode 100644 doc/html/inherit__graph__22.map create mode 100644 doc/html/inherit__graph__22.md5 create mode 100644 doc/html/inherit__graph__22.png create mode 100644 doc/html/inherit__graph__23.map create mode 100644 doc/html/inherit__graph__23.md5 create mode 100644 doc/html/inherit__graph__23.png create mode 100644 doc/html/inherit__graph__24.map create mode 100644 doc/html/inherit__graph__24.md5 create mode 100644 doc/html/inherit__graph__24.png create mode 100644 doc/html/inherit__graph__25.map create mode 100644 doc/html/inherit__graph__25.md5 create mode 100644 doc/html/inherit__graph__25.png create mode 100644 doc/html/inherit__graph__26.map create mode 100644 doc/html/inherit__graph__26.md5 create mode 100644 doc/html/inherit__graph__26.png create mode 100644 doc/html/inherit__graph__27.map create mode 100644 doc/html/inherit__graph__27.md5 create mode 100644 doc/html/inherit__graph__27.png create mode 100644 doc/html/inherit__graph__28.map create mode 100644 doc/html/inherit__graph__28.md5 create mode 100644 doc/html/inherit__graph__28.png create mode 100644 doc/html/inherit__graph__29.map create mode 100644 doc/html/inherit__graph__29.md5 create mode 100644 doc/html/inherit__graph__29.png create mode 100644 doc/html/inherit__graph__3.map create mode 100644 doc/html/inherit__graph__3.md5 create mode 100644 doc/html/inherit__graph__3.png create mode 100644 doc/html/inherit__graph__30.map create mode 100644 doc/html/inherit__graph__30.md5 create mode 100644 doc/html/inherit__graph__30.png create mode 100644 doc/html/inherit__graph__4.map create mode 100644 doc/html/inherit__graph__4.md5 create mode 100644 doc/html/inherit__graph__4.png create mode 100644 doc/html/inherit__graph__5.map create mode 100644 doc/html/inherit__graph__5.md5 create mode 100644 doc/html/inherit__graph__5.png create mode 100644 doc/html/inherit__graph__6.map create mode 100644 doc/html/inherit__graph__6.md5 create mode 100644 doc/html/inherit__graph__6.png create mode 100644 doc/html/inherit__graph__7.map create mode 100644 doc/html/inherit__graph__7.md5 create mode 100644 doc/html/inherit__graph__7.png create mode 100644 doc/html/inherit__graph__8.map create mode 100644 doc/html/inherit__graph__8.md5 create mode 100644 doc/html/inherit__graph__8.png create mode 100644 doc/html/inherit__graph__9.map create mode 100644 doc/html/inherit__graph__9.md5 create mode 100644 doc/html/inherit__graph__9.png create mode 100644 doc/html/inherits.html create mode 100644 doc/html/interfacecFileHandle-members.html create mode 100644 doc/html/livereceiver_8h-source.html create mode 100644 doc/html/menusetup_8h-source.html create mode 100644 doc/html/metadata_8h-source.html create mode 100644 doc/html/object_8h-source.html create mode 100644 doc/html/recplayer_8h-source.html create mode 100644 doc/html/resources_8h-source.html create mode 100644 doc/html/search_8h-source.html create mode 100644 doc/html/server_8h-source.html create mode 100644 doc/html/structDLNAIconProfile-members.html create mode 100644 doc/html/structDLNAIconProfile.html create mode 100644 doc/html/structDLNAProfile-members.html create mode 100644 doc/html/structDLNAProfile.html create mode 100644 doc/html/structcClass-members.html create mode 100644 doc/html/structcClass.html create mode 100644 doc/html/structcSortCrit-members.html create mode 100644 doc/html/structcSortCrit.html create mode 100644 doc/html/structcUPnPObjectID-members.html create mode 100644 doc/html/structcUPnPObjectID.html create mode 100644 doc/html/structcUPnPResultSet-members.html create mode 100644 doc/html/structcUPnPResultSet.html create mode 100644 doc/html/tab_b.gif create mode 100644 doc/html/tab_l.gif create mode 100644 doc/html/tab_r.gif create mode 100644 doc/html/tabs.css create mode 100644 doc/html/upnp_8h-source.html create mode 100644 doc/html/upnpservice_8h-source.html create mode 100644 doc/html/upnpwebserver_8h-source.html create mode 100644 doc/html/util_8h-source.html create mode 100644 doc/latex/FreeSans.ttf create mode 100644 doc/latex/Makefile create mode 100644 doc/latex/annotated.tex create mode 100644 doc/latex/classcAudioVideoDetector.tex create mode 100644 doc/latex/classcConnectionManager.tex create mode 100644 doc/latex/classcConnectionManager__coll__graph.eps create mode 100644 doc/latex/classcConnectionManager__coll__graph.md5 create mode 100644 doc/latex/classcConnectionManager__coll__graph.pdf create mode 100644 doc/latex/classcConnectionManager__inherit__graph.eps create mode 100644 doc/latex/classcConnectionManager__inherit__graph.md5 create mode 100644 doc/latex/classcConnectionManager__inherit__graph.pdf create mode 100644 doc/latex/classcContentDirectory.tex create mode 100644 doc/latex/classcContentDirectory__coll__graph.eps create mode 100644 doc/latex/classcContentDirectory__coll__graph.md5 create mode 100644 doc/latex/classcContentDirectory__coll__graph.pdf create mode 100644 doc/latex/classcContentDirectory__inherit__graph.eps create mode 100644 doc/latex/classcContentDirectory__inherit__graph.md5 create mode 100644 doc/latex/classcContentDirectory__inherit__graph.pdf create mode 100644 doc/latex/classcDlna.tex create mode 100644 doc/latex/classcDlna__coll__graph.eps create mode 100644 doc/latex/classcDlna__coll__graph.md5 create mode 100644 doc/latex/classcDlna__coll__graph.pdf create mode 100644 doc/latex/classcFileHandle.eps create mode 100644 doc/latex/classcFileHandle.pdf create mode 100644 doc/latex/classcFileHandle.tex create mode 100644 doc/latex/classcFileHandle__inherit__graph.eps create mode 100644 doc/latex/classcFileHandle__inherit__graph.md5 create mode 100644 doc/latex/classcFileHandle__inherit__graph.pdf create mode 100644 doc/latex/classcFilterCriteria.tex create mode 100644 doc/latex/classcLiveReceiver.eps create mode 100644 doc/latex/classcLiveReceiver.pdf create mode 100644 doc/latex/classcLiveReceiver.tex create mode 100644 doc/latex/classcLiveReceiver__coll__graph.eps create mode 100644 doc/latex/classcLiveReceiver__coll__graph.md5 create mode 100644 doc/latex/classcLiveReceiver__coll__graph.pdf create mode 100644 doc/latex/classcLiveReceiver__inherit__graph.eps create mode 100644 doc/latex/classcLiveReceiver__inherit__graph.md5 create mode 100644 doc/latex/classcLiveReceiver__inherit__graph.pdf create mode 100644 doc/latex/classcMediaDatabase.tex create mode 100644 doc/latex/classcMediaDatabase__coll__graph.eps create mode 100644 doc/latex/classcMediaDatabase__coll__graph.md5 create mode 100644 doc/latex/classcMediaDatabase__coll__graph.pdf create mode 100644 doc/latex/classcMediatorInterface.tex create mode 100644 doc/latex/classcMediatorInterface__inherit__graph.eps create mode 100644 doc/latex/classcMediatorInterface__inherit__graph.md5 create mode 100644 doc/latex/classcMediatorInterface__inherit__graph.pdf create mode 100644 doc/latex/classcMenuSetupUPnP.tex create mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.eps create mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.md5 create mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.pdf create mode 100644 doc/latex/classcPathParser.tex create mode 100644 doc/latex/classcPluginUpnp.tex create mode 100644 doc/latex/classcPluginUpnp__coll__graph.eps create mode 100644 doc/latex/classcPluginUpnp__coll__graph.md5 create mode 100644 doc/latex/classcPluginUpnp__coll__graph.pdf create mode 100644 doc/latex/classcRecordingPlayer.tex create mode 100644 doc/latex/classcRecordingPlayer__coll__graph.eps create mode 100644 doc/latex/classcRecordingPlayer__coll__graph.md5 create mode 100644 doc/latex/classcRecordingPlayer__coll__graph.pdf create mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.eps create mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.md5 create mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.pdf create mode 100644 doc/latex/classcRegisteredProfile.tex create mode 100644 doc/latex/classcRegisteredProfile__coll__graph.eps create mode 100644 doc/latex/classcRegisteredProfile__coll__graph.md5 create mode 100644 doc/latex/classcRegisteredProfile__coll__graph.pdf create mode 100644 doc/latex/classcRow.tex create mode 100644 doc/latex/classcRows.tex create mode 100644 doc/latex/classcRows__coll__graph.eps create mode 100644 doc/latex/classcRows__coll__graph.md5 create mode 100644 doc/latex/classcRows__coll__graph.pdf create mode 100644 doc/latex/classcSQLiteDatabase.tex create mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.eps create mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.md5 create mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.pdf create mode 100644 doc/latex/classcSortCriteria.tex create mode 100644 doc/latex/classcSortCriteria__coll__graph.eps create mode 100644 doc/latex/classcSortCriteria__coll__graph.md5 create mode 100644 doc/latex/classcSortCriteria__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassContainer.tex create mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPClassItem.tex create mode 100644 doc/latex/classcUPnPClassItem__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassItem__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassItem__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPClassMovie.tex create mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPClassObject.tex create mode 100644 doc/latex/classcUPnPClassObject__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassObject__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassObject__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPClassVideoBroadcast.tex create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPClassVideoItem.tex create mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.eps create mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.md5 create mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.pdf create mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.eps create mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPConfig.tex create mode 100644 doc/latex/classcUPnPConfig__coll__graph.eps create mode 100644 doc/latex/classcUPnPConfig__coll__graph.md5 create mode 100644 doc/latex/classcUPnPConfig__coll__graph.pdf create mode 100644 doc/latex/classcUPnPContainerMediator.tex create mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPItemMediator.tex create mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPMovieMediator.tex create mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPObjectFactory.tex create mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.eps create mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.md5 create mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.pdf create mode 100644 doc/latex/classcUPnPObjectMediator.tex create mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPObjects.tex create mode 100644 doc/latex/classcUPnPResource.tex create mode 100644 doc/latex/classcUPnPResourceMediator.tex create mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPResource__coll__graph.eps create mode 100644 doc/latex/classcUPnPResource__coll__graph.md5 create mode 100644 doc/latex/classcUPnPResource__coll__graph.pdf create mode 100644 doc/latex/classcUPnPResources.tex create mode 100644 doc/latex/classcUPnPResources__coll__graph.eps create mode 100644 doc/latex/classcUPnPResources__coll__graph.md5 create mode 100644 doc/latex/classcUPnPResources__coll__graph.pdf create mode 100644 doc/latex/classcUPnPServer.tex create mode 100644 doc/latex/classcUPnPServer__coll__graph.eps create mode 100644 doc/latex/classcUPnPServer__coll__graph.md5 create mode 100644 doc/latex/classcUPnPServer__coll__graph.pdf create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator.tex create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPVideoItemMediator.tex create mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.eps create mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.md5 create mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf create mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps create mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5 create mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf create mode 100644 doc/latex/classcUPnPWebServer.tex create mode 100644 doc/latex/classcUPnPWebServer__coll__graph.eps create mode 100644 doc/latex/classcUPnPWebServer__coll__graph.md5 create mode 100644 doc/latex/classcUPnPWebServer__coll__graph.pdf create mode 100644 doc/latex/classcUpnpService.tex create mode 100644 doc/latex/classcUpnpService__inherit__graph.eps create mode 100644 doc/latex/classcUpnpService__inherit__graph.md5 create mode 100644 doc/latex/classcUpnpService__inherit__graph.pdf create mode 100644 doc/latex/classcVirtualConnection.tex create mode 100644 doc/latex/doxygen.sty create mode 100644 doc/latex/hierarchy.tex create mode 100644 doc/latex/refman.tex create mode 100644 doc/latex/structDLNAIconProfile.tex create mode 100644 doc/latex/structDLNAProfile.tex create mode 100644 doc/latex/structcClass.tex create mode 100644 doc/latex/structcSortCrit.tex create mode 100644 doc/latex/structcUPnPObjectID.tex create mode 100644 doc/latex/structcUPnPResultSet.tex create mode 100644 doc/upnpdlna.dox create mode 100755 http/icons/upnpIconLrg.jpeg create mode 100755 http/icons/upnpIconLrg.png create mode 100755 http/icons/upnpIconSm.jpeg create mode 100755 http/icons/upnpIconSm.png create mode 100644 http/xml/cds_scpd.xml create mode 100644 http/xml/cms_scpd.xml create mode 100644 inc/avdetector.h create mode 100644 inc/config.h create mode 100644 inc/database.h create mode 100644 inc/filehandle.h create mode 100644 inc/livereceiver.h create mode 100644 inc/menusetup.h create mode 100644 inc/metadata.h create mode 100644 inc/object.h create mode 100644 inc/profiles.h create mode 100644 inc/profiles/aac.h create mode 100644 inc/profiles/ac3.h create mode 100644 inc/profiles/amr.h create mode 100644 inc/profiles/atrac3plus.h create mode 100644 inc/profiles/container.h create mode 100644 inc/profiles/jpeg.h create mode 100644 inc/profiles/lpcm.h create mode 100644 inc/profiles/mpa.h create mode 100644 inc/profiles/mpeg1.h create mode 100644 inc/profiles/mpeg2.h create mode 100644 inc/profiles/mpeg4_p10.h create mode 100644 inc/profiles/mpeg4_p2.h create mode 100644 inc/profiles/png.h create mode 100644 inc/profiles/profile_data.h create mode 100644 inc/profiles/wma.h create mode 100644 inc/profiles/wmv9.h create mode 100644 inc/recplayer.h create mode 100644 inc/resources.h create mode 100644 inc/search.h create mode 100644 inc/server.h create mode 100644 inc/upnp/connectionmanager.h create mode 100644 inc/upnp/contentdirectory.h create mode 100644 inc/upnp/dlna.h create mode 100644 inc/upnp/service.h create mode 100644 inc/util.h create mode 100644 inc/webserver.h create mode 100644 po/de-DE.po create mode 100644 po/de-DE.po~ create mode 100644 server/webserver.cpp create mode 100644 upnp/connectionmanager.cpp create mode 100644 upnp/contentdirectory.cpp create mode 100644 upnp/service.cpp 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 + +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 +#include +#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::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( + " \ + \ + \ + 1 \ + 0 \ + \ + %s \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + %d \ + %d \ + %d \ + %s \ + \ + \ + %s \ + <%s:X_DLNADOC>%s \ + \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + %s \ + %s \ + %s \ + %s \ + %s \ + \ + \ + \ + ", + 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 + +#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; icodec_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 Binary files /dev/null and b/doc/Source Code Documentation.zip differ diff --git a/doc/doxygen.err b/doc/doxygen.err new file mode 100644 index 0000000..e69de29 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 @@ + + +UPnP/DLNA plugin for VDR: Class List + + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: misc/avdetector.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cAudioVideoDetector Member List

This is the complete list of members for cAudioVideoDetector, including all inherited members.

+ + + +
cAudioVideoDetector() (defined in cAudioVideoDetector)cAudioVideoDetector [inline]
detectVideoProperties(cUPnPResource *Resource, const char *Filename)cAudioVideoDetector
~cAudioVideoDetector() (defined in cAudioVideoDetector)cAudioVideoDetector [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cAudioVideoDetector Class Reference + + + + + +
+

cAudioVideoDetector Class Reference

#include <avdetector.h> +

+ +

+List of all members. + + + + +

Public Member Functions

int detectVideoProperties (cUPnPResource *Resource, const char *Filename)
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int cAudioVideoDetector::detectVideoProperties (cUPnPResource Resource,
const char *  Filename 
)
+
+
+ +

+Detect video properties

+This detects video properties of a video stream and stores them in the Resource object.

+

Parameters:
+ + + +
Resource the resource, where to save the data
Filename the file, which shall be read
+
+
Returns:
returns
    +
  • 0, if the detection was successful
  • <0, otherwise
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cConnectionManager Member List

This is the complete list of members for cConnectionManager, including all inherited members.

+ + + + + + + + + +
cConnectionManager(UpnpDevice_Handle DeviceHandle)cConnectionManager
execute(Upnp_Action_Request *Request)cConnectionManager [virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cConnectionManager [virtual]
subscribe(Upnp_Subscription_Request *Request)cConnectionManager [virtual]
~cConnectionManager() (defined in cConnectionManager)cConnectionManager [virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cConnectionManager Class Reference + + + + + +
+

cConnectionManager Class Reference

#include <connectionmanager.h> +

+

+Inheritance diagram for cConnectionManager:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cConnectionManager:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + +

Public Member Functions

 cConnectionManager (UpnpDevice_Handle DeviceHandle)
virtual int subscribe (Upnp_Subscription_Request *Request)
virtual int execute (Upnp_Action_Request *Request)
virtual void setError (Upnp_Action_Request *Request, int Error)
+


Detailed Description

+The connection manager service

+This is the connection manager service which handles all incoming connection, creates and destroys connections to clients.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cConnectionManager::cConnectionManager (UpnpDevice_Handle  DeviceHandle  ) 
+
+
+ +

+Constructor of a Connection manager

+This creates an instance of a Connection Manager Service and provides interfaces for executing actions and subscribing on events.

Parameters:
+ + +
DeviceHandle the UPnP device handle of this root device
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cConnectionManager::execute (Upnp_Action_Request *  Request  )  [virtual]
+
+
+ +

+Executes an action

+This executes an action initialized by a control point. The result is stored in the first parameter.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Input and output parameters of an action
+
+ +

Implements cUpnpService.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cConnectionManager::setError (Upnp_Action_Request *  Request,
int  Error 
) [virtual]
+
+
+ +

+Sets an error on an action request

+This function puts a error message into the action request structure according to its error code

+

Parameters:
+ + + +
Request the action request, to set the error for
Error the error code of which the message should be obtained
+
+ +

Reimplemented from cUpnpService.

+ +
+

+ +

+
+ + + + + + + + + +
int cConnectionManager::subscribe (Upnp_Subscription_Request *  Request  )  [virtual]
+
+
+ +

+Subscribes to an event

+This is a callback function to register a new subscriber for an event.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Information about the subscription
+
+ +

Implements cUpnpService.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcConnectionManager__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcConnectionManager__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cContentDirectory Member List

This is the complete list of members for cContentDirectory, including all inherited members.

+ + + + + + + + + +
cContentDirectory(UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)cContentDirectory
execute(Upnp_Action_Request *Request)cContentDirectory [virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cContentDirectory [virtual]
subscribe(Upnp_Subscription_Request *Request)cContentDirectory [virtual]
~cContentDirectory() (defined in cContentDirectory)cContentDirectory [virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cContentDirectory Class Reference + + + + + +
+

cContentDirectory Class Reference

#include <contentdirectory.h> +

+

+Inheritance diagram for cContentDirectory:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cContentDirectory:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + +

Public Member Functions

 cContentDirectory (UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)
virtual int subscribe (Upnp_Subscription_Request *Request)
virtual int execute (Upnp_Action_Request *Request)
virtual void setError (Upnp_Action_Request *Request, int Error)
+


Detailed Description

+The content directory service

+This is the content directory service which handles all incoming requests for contents managed by the media server.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cContentDirectory::cContentDirectory (UpnpDevice_Handle  DeviceHandle,
cMediaDatabase MediaDatabase 
)
+
+
+ +

+Constructor of a Content Directory

+This creates an instance of a Content Directory Service and provides interfaces for executing actions and subscribing on events.

Parameters:
+ + + +
DeviceHandle The UPnP device handle of the root device
MediaDatabase the media database where requests are processed
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cContentDirectory::execute (Upnp_Action_Request *  Request  )  [virtual]
+
+
+ +

+Executes an action

+This executes an action initialized by a control point. The result is stored in the first parameter.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Input and output parameters of an action
+
+ +

Implements cUpnpService.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cContentDirectory::setError (Upnp_Action_Request *  Request,
int  Error 
) [virtual]
+
+
+ +

+Sets an error on an action request

+This function puts a error message into the action request structure according to its error code

+

Parameters:
+ + + +
Request the action request, to set the error for
Error the error code of which the message should be obtained
+
+ +

Reimplemented from cUpnpService.

+ +
+

+ +

+
+ + + + + + + + + +
int cContentDirectory::subscribe (Upnp_Subscription_Request *  Request  )  [virtual]
+
+
+ +

+Subscribes to an event

+This is a callback function to register a new subscriber for an event.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Information about the subscription
+
+ +

Implements cUpnpService.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + 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 Binary files /dev/null and b/doc/html/classcContentDirectory__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcContentDirectory__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cDlna Member List

This is the complete list of members for cDlna, including all inherited members.

+ + + + + + + + + + + +
cUPnPServer (defined in cDlna)cDlna [friend]
getDeviceDescription(const char *URLBase)cDlna
getInstance(void)cDlna [static]
getProfileOfChannel(cChannel *Channel)cDlna
getProfileOfFile(cString File)cDlna
getProfileOfRecording(cRecording *Recording)cDlna
getProtocolInfo(DLNAProfile *Prof)cDlna
getSupportedProtocols()cDlna
registerMainProfiles()cDlna
registerProfile(DLNAProfile *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)cDlna
~cDlna() (defined in cDlna)cDlna [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cDlna Class Reference + + + + + +
+

cDlna Class Reference

#include <dlna.h> +

+

+Collaboration diagram for cDlna:
+
+

Collaboration graph
+
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

const char * getDeviceDescription (const char *URLBase)
void registerProfile (DLNAProfile *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)
void registerMainProfiles ()
const char * getSupportedProtocols ()
const char * getProtocolInfo (DLNAProfile *Prof)
DLNAProfilegetProfileOfChannel (cChannel *Channel)
DLNAProfilegetProfileOfRecording (cRecording *Recording)
DLNAProfilegetProfileOfFile (cString File)

Static Public Member Functions

static cDlnagetInstance (void)

Friends

+class cUPnPServer
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + +
const char * cDlna::getDeviceDescription (const char *  URLBase  ) 
+
+
+ +

+Device description document

+This will return the device description document with service type definitions as well as some DLNA specific information

+

Returns:
The description document
+
Parameters:
+ + +
URLBase the URLBase to be set in the document
+
+ +
+

+ +

+
+ + + + + + + + + +
cDlna * cDlna::getInstance (void   )  [static]
+
+
+ +

+Returns the instance of DLNA object

+This will create a DLNA object instance. It will return the same instance on subsequent calls.

+

Returns:
the DLNA object instance
+ +
+

+ +

+
+ + + + + + + + + +
DLNAProfile * cDlna::getProfileOfChannel (cChannel *  Channel  ) 
+
+
+ +

+Profile of a channel

+Returns the DLNA profile of a VDR channel. It checks the video type to determine which profile will match.

+

Returns:
the matching DLNA profile
+
Parameters:
+ + +
Channel the channel of which the profile should created from
+
+ +
+

+ +

+
+ + + + + + + + + +
DLNAProfile * cDlna::getProfileOfFile (cString  File  ) 
+
+
+ +

+Profile of a file

+Returns the DLNA profile of a file. It checks the content of the file with ffmpeg to determine which profile will match.

+

Returns:
the matching DLNA profile
+
Parameters:
+ + +
File the file of which the profile should be created from
+
+ +
+

+ +

+
+ + + + + + + + + +
DLNAProfile * cDlna::getProfileOfRecording (cRecording *  Recording  ) 
+
+
+ +

+Profile of a recording

+Returns the DLNA profile of a VDR recording. It checks the video file to determine which profile will match.

+

Returns:
the matching DLNA profile
+
Parameters:
+ + +
Recording the recording of which the profile should be created from
+
+ +
+

+ +

+
+ + + + + + + + + +
const char * cDlna::getProtocolInfo (DLNAProfile Prof  ) 
+
+
+ +

+Protocol info of a specific DLNA profile

+Returns the protocol info string of a specific DLNA profile with its options and flags.

+

Returns:
the protocol info string of the profile
+
Parameters:
+ + +
Prof the Profile of which the protocol info shall be returned
+
+ +
+

+ +

+
+ + + + + + + + +
const char * cDlna::getSupportedProtocols (  ) 
+
+
+ +

+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.

+

Returns:
CSV list of registered protocols
+ +
+

+ +

+
+ + + + + + + + +
void cDlna::registerMainProfiles (  ) 
+
+
+ +

+Registeres all known DLNA profiles

+Registeres all well known DLNA profiles with its known options +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void cDlna::registerProfile (DLNAProfile Profile,
int  Op = -1,
const char *  Ps = NULL,
int  Ci = -1,
unsigned int  Flags = 0 
)
+
+
+ +

+Registeres a DLNA profile

+Registeres a DLNA profile with specific optional options

+

See also:
common.h
+
Parameters:
+ + + + + + +
Profile the DLNA profile
Op operation mode
Ps play speed (CSV list)
Ci conversion indication flag
Flags DLNA flags
+
+ +
+

+


The documentation for this class was generated from the following files:
    +
  • upnpcomponents/dlna.h
  • upnpcomponents/dlna.cpp
+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/classcDlna__coll__graph.map b/doc/html/classcDlna__coll__graph.map new file mode 100644 index 0000000..e69de29 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 Binary files /dev/null and b/doc/html/classcDlna__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cFileHandle Member List

This is the complete list of members for cFileHandle, including all inherited members.

+ + + + + + +
close()=0cFileHandle [pure virtual]
open(UpnpOpenFileMode mode)=0cFileHandle [pure virtual]
read(char *buf, size_t buflen)=0cFileHandle [pure virtual]
seek(off_t offset, int whence)=0cFileHandle [pure virtual]
write(char *buf, size_t buflen)=0cFileHandle [pure virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cFileHandle Class Reference + + + + + +
+

cFileHandle Class Reference

#include <filehandle.h> +

+

+Inheritance diagram for cFileHandle:
+
+

Inheritance graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

virtual void open (UpnpOpenFileMode mode)=0
virtual int read (char *buf, size_t buflen)=0
virtual int write (char *buf, size_t buflen)=0
virtual int seek (off_t offset, int whence)=0
virtual void close ()=0
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + +
virtual void cFileHandle::close (  )  [pure virtual]
+
+
+ +

+Closes the open file

+This will close open file handles and frees the memory obtained by it. +

Implemented in cLiveReceiver, and cRecordingPlayer.

+ +
+

+ +

+
+ + + + + + + + + +
virtual void cFileHandle::open (UpnpOpenFileMode  mode  )  [pure virtual]
+
+
+ +

+Opens the file

+Opens the file at the given mode. These can be:

    +
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
+

+

Parameters:
+ + +
mode The file mode, i.e. one of the following
    +
  • UPNP_READ
  • UPNP_WRITE
+
+
+
Parameters:
+ + +
mode The file mode, i.e. one of the following
    +
  • UPNP_READ
  • UPNP_WRITE
+
+
+ +

Implemented in cLiveReceiver, and cRecordingPlayer.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
virtual int cFileHandle::read (char *  buf,
size_t  buflen 
) [pure virtual]
+
+
+ +

+Reads from the file

+Reads from the file a certain amount of bytes and stores them in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implemented in cLiveReceiver, and cRecordingPlayer.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
virtual int cFileHandle::seek (off_t  offset,
int  whence 
) [pure virtual]
+
+
+ +

+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

+

    +
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
+

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
offset The byte offset in the file
whence one of the following
    +
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
+
+
+
Parameters:
+ + + +
offset The byte offset in the file
whence one of the following
    +
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
+
+
+ +

Implemented in cLiveReceiver, and cRecordingPlayer.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
virtual int cFileHandle::write (char *  buf,
size_t  buflen 
) [pure virtual]
+
+
+ +

+Writes to the file

+Writes to the file a certain amount of bytes which are stored in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implemented in cLiveReceiver, and cRecordingPlayer.

+ +
+

+


The documentation for this class was generated from the following file: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/classcFileHandle.png b/doc/html/classcFileHandle.png new file mode 100644 index 0000000..d370300 Binary files /dev/null and b/doc/html/classcFileHandle.png 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcFileHandle__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cFilterCriteria Member List

This is the complete list of members for cFilterCriteria, including all inherited members.

+ + +
parse(const char *Filter)cFilterCriteria [static]
~cFilterCriteria() (defined in cFilterCriteria)cFilterCriteria [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cFilterCriteria Class Reference + + + + + +
+

cFilterCriteria Class Reference

#include <search.h> +

+ +

+List of all members. + + + + +

Static Public Member Functions

static cStringList * parse (const char *Filter)
+


Detailed Description

+Parses the filter criteria

+This parses the filter criteria which comes from a Browse or Search request.


Member Function Documentation

+ +
+
+ + + + + + + + + +
cStringList * cFilterCriteria::parse (const char *  Filter  )  [static]
+
+
+ +

+Parses the filter criteria

+This parses the filter criteria. It may be a empty string list, a NULL pointer or a list with properties which shall be shown in the DIDL-Lite fragment.

+

Returns:
the stringlist containing the filter
+
Parameters:
+ + +
Filter the filter string
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cLiveReceiver Member List

This is the complete list of members for cLiveReceiver, including all inherited members.

+ + + + + + + + + + + +
Action(void)cLiveReceiver [protected, virtual]
Activate(bool On)cLiveReceiver [protected, virtual]
close()cLiveReceiver [virtual]
newInstance(cChannel *Channel, int Priority)cLiveReceiver [static]
open(UpnpOpenFileMode mode)cLiveReceiver [virtual]
read(char *buf, size_t buflen)cLiveReceiver [virtual]
Receive(uchar *Data, int Length)cLiveReceiver [protected, virtual]
seek(off_t offset, int whence)cLiveReceiver [virtual]
write(char *buf, size_t buflen)cLiveReceiver [virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]
~cLiveReceiver(void) (defined in cLiveReceiver)cLiveReceiver [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cLiveReceiver Class Reference + + + + + +
+

cLiveReceiver Class Reference

#include <livereceiver.h> +

+

+Inheritance diagram for cLiveReceiver:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cLiveReceiver:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

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 whence)
virtual void close ()

Static Public Member Functions

static cLiveReceivernewInstance (cChannel *Channel, int Priority)

Protected Member Functions

virtual void Receive (uchar *Data, int Length)
virtual void Activate (bool On)
virtual void Action (void)
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + +
void cLiveReceiver::Action (void   )  [protected, virtual]
+
+
+ +

+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 +

+

+ +

+
+ + + + + + + + + +
void cLiveReceiver::Activate (bool  On  )  [protected, virtual]
+
+
+ +

+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 true, the receiver will be activated. If it is false, the receiver will be deactivated and stops its threads.

Parameters:
+ + +
On Activates the receiver thread
+
+ +
+

+ +

+
+ + + + + + + + +
void cLiveReceiver::close (  )  [virtual]
+
+
+ +

+Closes the open file

+This will close open file handles and frees the memory obtained by it. +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
cLiveReceiver * cLiveReceiver::newInstance (cChannel *  Channel,
int  Priority 
) [static]
+
+
+ +

+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.

+

Returns:
returns a new liveReceiver instance
+
Parameters:
+ + + +
Channel the channel which shall be tuned
Priority the priority level
+
+ +
+

+ +

+
+ + + + + + + + + +
void cLiveReceiver::open (UpnpOpenFileMode  mode  )  [virtual]
+
+
+ +

+Opens the file

+Opens the file at the given mode. These can be:

    +
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
+

+

Parameters:
+ + +
mode The file mode, i.e. one of the following
    +
  • UPNP_READ
  • UPNP_WRITE
+
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cLiveReceiver::read (char *  buf,
size_t  buflen 
) [virtual]
+
+
+ +

+Reads from the file

+Reads from the file a certain amount of bytes and stores them in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cLiveReceiver::Receive (uchar *  Data,
int  Length 
) [protected, virtual]
+
+
+ +

+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

Parameters:
+ + + +
Data The data received from VDR
Length The length of the data packet, usually 188 bytes
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cLiveReceiver::seek (off_t  offset,
int  whence 
) [virtual]
+
+
+ +

+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

+

    +
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
+

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
offset The byte offset in the file
whence one of the following
    +
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
+
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cLiveReceiver::write (char *  buf,
size_t  buflen 
) [virtual]
+
+
+ +

+Writes to the file

+Writes to the file a certain amount of bytes which are stored in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implements cFileHandle.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/classcLiveReceiver.png b/doc/html/classcLiveReceiver.png new file mode 100644 index 0000000..efedd53 Binary files /dev/null and b/doc/html/classcLiveReceiver.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcLiveReceiver__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcLiveReceiver__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cMediaDatabase Member List

This is the complete list of members for cMediaDatabase, including all inherited members.

+ + + + + + + + + + + +
addFastFind(cUPnPClassObject *Object, const char *FastFind)cMediaDatabase
browse(OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")cMediaDatabase
cMediaDatabase()cMediaDatabase
cUPnPObjectMediator (defined in cMediaDatabase)cMediaDatabase [friend]
cUPnPServer (defined in cMediaDatabase)cMediaDatabase [friend]
getContainerUpdateIDs()cMediaDatabase
getObjectByFastFind(const char *FastFind)cMediaDatabase
getObjectByID(cUPnPObjectID ID)cMediaDatabase
getSystemUpdateID()cMediaDatabase
search(OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")cMediaDatabase
~cMediaDatabase() (defined in cMediaDatabase)cMediaDatabase [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cMediaDatabase Class Reference + + + + + +
+

cMediaDatabase Class Reference

#include <metadata.h> +

+

+Collaboration diagram for cMediaDatabase:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

unsigned int getSystemUpdateID ()
const char * getContainerUpdateIDs ()
 cMediaDatabase ()
int addFastFind (cUPnPClassObject *Object, const char *FastFind)
cUPnPClassObjectgetObjectByFastFind (const char *FastFind)
cUPnPClassObjectgetObjectByID (cUPnPObjectID ID)
int browse (OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")
int search (OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")

Friends

+class cUPnPServer
+class cUPnPObjectMediator
+


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.

+

See also:
cUPnPClassObject
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cMediaDatabase::cMediaDatabase (  ) 
+
+
+ +

+Constructor

+This creates an instance of the media database. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int cMediaDatabase::addFastFind (cUPnPClassObject Object,
const char *  FastFind 
)
+
+
+ +

+Add a Fastfind

+This creates a 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.

+

Returns:
returns
    +
  • -1, if the creation was successful
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object, which should be registered
FastFind the string with which the object shall be relocated
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int cMediaDatabase::browse (OUT cUPnPResultSet **  Results,
IN const char *  ID,
IN bool  BrowseMetadata,
IN const char *  Filter = "*",
IN unsigned int  Offset = 0,
IN unsigned int  Count = 0,
IN const char *  SortCriteria = "" 
)
+
+
+ +

+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.

+

Returns:
returns an integer representing one of the following:
    +
  • UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
  • UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while processing the request
  • UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
  • UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
  • UPNP_E_SUCCESS, if the request was successful
+
+
Parameters:
+ + + + + + + + +
Results the result of the request
ID the objectID of the request
BrowseMetadata true to browse metadata, false otherwise
Filter the filter applied to the returned metadata
Offset the starting offset
Count maximum count returned
SortCriteria sorts the results before returning them
+
+ +
+

+ +

+
+ + + + + + + + +
const char * cMediaDatabase::getContainerUpdateIDs (  ) 
+
+
+ +

+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.

+

Returns:
CSV list of ContainerUpdateIDs
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassObject * cMediaDatabase::getObjectByFastFind (const char *  FastFind  ) 
+
+
+ +

+Finds a object by Fastfind

+This returns the object via the Fastfind string. The object must be previosly registered via 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 also:
cMediaDatabase::addFastFind
+
Returns:
The object associated with FastFind
+
Parameters:
+ + +
FastFind the string with which the object shall be relocated
+
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassObject * cMediaDatabase::getObjectByID (cUPnPObjectID  ID  ) 
+
+
+ +

+Finds a object by its ObjectID

+This returns the object via its ObjectID.

+It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.

+

Returns:
The object associated with FastFind
+
Parameters:
+ + +
ID The ObjectID of the requested object
+
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cMediaDatabase::getSystemUpdateID (  ) 
+
+
+ +

+Returns the SystemUpdateID

+This returns the SystemUpdateID. This changes whenever anything changed within the content directory. This value will be sent through the UPnP network every 2 seconds.

+

Returns:
the SystemUpdateID
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int cMediaDatabase::search (OUT cUPnPResultSet **  Results,
IN const char *  ID,
IN const char *  Search,
IN const char *  Filter = "*",
IN unsigned int  Offset = 0,
IN unsigned int  Count = 0,
IN const char *  SortCriteria = "" 
)
+
+
+ +

+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.
+
Returns:
returns an integer representing one of the following:
    +
  • UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
  • UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while processing the request
  • UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
  • UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
  • UPNP_E_SUCCESS, if the request was successful
+
+
Parameters:
+ + + + + + + + +
Results the result of the request
ID the ContainerID
Search the search string
Filter the filter applied to the returned metadata
Offset the starting offset
Count maximum count returned
SortCriteria sorts the results before returning them
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + 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 Binary files /dev/null and b/doc/html/classcMediaDatabase__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cMediatorInterface Member List

This is the complete list of members for cMediatorInterface, including all inherited members.

+ + + + + + +
clearObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
createObject(const char *Title, bool Restricted)=0cMediatorInterface [pure virtual]
deleteObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
getObject(cUPnPObjectID ID)=0cMediatorInterface [pure virtual]
saveObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cMediatorInterface Class Reference + + + + + +
+

cMediatorInterface Class Reference

#include <object.h> +

+

+Inheritance diagram for cMediatorInterface:
+
+

Inheritance graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

virtual cUPnPClassObjectcreateObject (const char *Title, bool Restricted)=0
virtual cUPnPClassObjectgetObject (cUPnPObjectID ID)=0
virtual int saveObject (cUPnPClassObject *Object)=0
virtual int deleteObject (cUPnPClassObject *Object)=0
virtual int clearObject (cUPnPClassObject *Object)=0
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + +
virtual int cMediatorInterface::clearObject (cUPnPClassObject Object  )  [pure virtual]
+
+
+ +

+Clears the object

+This clears the object, i.e. all its children will be removed and deleted from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be cleared
+
+ +

Implemented in cUPnPObjectMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
virtual cUPnPClassObject* cMediatorInterface::createObject (const char *  Title,
bool  Restricted 
) [pure virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Implemented in cUPnPObjectMediator, cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + +
virtual int cMediatorInterface::deleteObject (cUPnPClassObject Object  )  [pure virtual]
+
+
+ +

+Deletes the object

+This deletes the object in the database by removing all its children and then deleting the contents from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be deleted
+
+ +

Implemented in cUPnPObjectMediator.

+ +
+

+ +

+
+ + + + + + + + + +
virtual cUPnPClassObject* cMediatorInterface::getObject (cUPnPObjectID  ID  )  [pure virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Implemented in cUPnPObjectMediator, cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + +
virtual int cMediatorInterface::saveObject (cUPnPClassObject Object  )  [pure virtual]
+
+
+ +

+Saves the object

+This saves the object in the database by updating the values in the database with those in the object.

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Implemented in cUPnPObjectMediator.

+ +
+

+


The documentation for this class was generated from the following file: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + 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 Binary files /dev/null and b/doc/html/classcMediatorInterface__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cMenuSetupUPnP Member List

This is the complete list of members for cMenuSetupUPnP, including all inherited members.

+ + + + + +
cMenuSetupUPnP() (defined in cMenuSetupUPnP)cMenuSetupUPnP
Load(void)cMenuSetupUPnP [protected]
ProcessKey(eKeys Key)cMenuSetupUPnP [virtual]
Store(void)cMenuSetupUPnP [protected, virtual]
Update(void)cMenuSetupUPnP [protected]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cMenuSetupUPnP Class Reference + + + + + +
+

cMenuSetupUPnP Class Reference

#include <menusetup.h> +

+

+Collaboration diagram for cMenuSetupUPnP:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + +

Public Member Functions

virtual eOSState ProcessKey (eKeys Key)

Protected Member Functions

virtual void Store (void)
void Update (void)
void Load (void)
+


Detailed Description

+The VDR setup page

+This class shows and manages the settings within the VDR setup OSD


Member Function Documentation

+ +
+
+ + + + + + + + + +
void cMenuSetupUPnP::Load (void   )  [protected]
+
+
+ +

+Loads the setup information

+This loads the setup information from the configuration file +

+

+ +

+
+ + + + + + + + + +
eOSState cMenuSetupUPnP::ProcessKey (eKeys  Key  )  [virtual]
+
+
+ +

+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

+

Returns:
The current state of the VDR
+
Parameters:
+ + +
Key Key, pressed by the user
+
+ +
+

+ +

+
+ + + + + + + + + +
void cMenuSetupUPnP::Store (void   )  [protected, virtual]
+
+
+ +

+Stores the setup information

+This stores the setup information in the configuration file +

+

+ +

+
+ + + + + + + + + +
void cMenuSetupUPnP::Update (void   )  [protected]
+
+
+ +

+Update the menu

+This updates the menu osd and refreshes the screen. +

+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcMenuSetupUPnP__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cPathParser Member List

This is the complete list of members for cPathParser, including all inherited members.

+ + +
parse(const char *Path, int *Section, int *Method, propertyMap *Properties)cPathParser [static]
~cPathParser() (defined in cPathParser)cPathParser [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cPathParser Class Reference + + + + + +
+

cPathParser Class Reference

#include <search.h> +

+ +

+List of all members. + + + + +

Static Public Member Functions

static bool parse (const char *Path, int *Section, int *Method, propertyMap *Properties)
+


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


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool cPathParser::parse (const char *  Path,
int *  Section,
int *  Method,
propertyMap *  Properties 
) [static]
+
+
+ +

+Parses the path

+This will parse the path and stores the result in the pointers given.

+

Returns:
returns
    +
  • true, if the parsing was successful
  • false, otherwise
+
+
Parameters:
+ + + + + +
Path the path which is parsed
Section the number of the registered section
Method the number of the registered method
Properties the properties found in the path
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cPluginUpnp Member List

This is the complete list of members for cPluginUpnp, including all inherited members.

+ + + + + + + + + + + + + +
Active(void)cPluginUpnp [virtual]
CommandLineHelp(void)cPluginUpnp [virtual]
cPluginUpnp(void) (defined in cPluginUpnp)cPluginUpnp
Description(void)cPluginUpnp [virtual]
getConfigDirectory()cPluginUpnp [static]
Initialize(void)cPluginUpnp [virtual]
ProcessArgs(int argc, char *argv[])cPluginUpnp [virtual]
SetupMenu(void)cPluginUpnp [virtual]
SetupParse(const char *Name, const char *Value)cPluginUpnp [virtual]
Start(void)cPluginUpnp [virtual]
Stop(void)cPluginUpnp [virtual]
Version(void)cPluginUpnp [virtual]
~cPluginUpnp() (defined in cPluginUpnp)cPluginUpnp [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cPluginUpnp Class Reference + + + + + +
+

cPluginUpnp Class Reference

#include <upnp.h> +

+

+Collaboration diagram for cPluginUpnp:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual const char * Version (void)
virtual const char * Description (void)
virtual const char * CommandLineHelp (void)
virtual bool ProcessArgs (int argc, char *argv[])
virtual bool Initialize (void)
virtual bool Start (void)
virtual void Stop (void)
virtual cString Active (void)
virtual cMenuSetupPage * SetupMenu (void)
virtual bool SetupParse (const char *Name, const char *Value)

Static Public Member Functions

static const char * getConfigDirectory ()
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + +
cString cPluginUpnp::Active (void   )  [virtual]
+
+
+ +

+Message if still active

+This returns a message if the plugin is still active when a user attempts to shut down the VDR.

+

Returns:
the message shown on the screen.
+ +
+

+ +

+
+ + + + + + + + + +
const char * cPluginUpnp::CommandLineHelp (void   )  [virtual]
+
+
+ +

+Get the command line help

+This returns the command line help output, which comes, when the user types --help into the command line.

+

Returns:
the command line help
+ +
+

+ +

+
+ + + + + + + + + +
const char * cPluginUpnp::Description (void   )  [virtual]
+
+
+ +

+Get the description

+This returns a brief description of the plugin and what it does.

+

Returns:
the description of the plugin
+ +
+

+ +

+
+ + + + + + + + +
const char * cPluginUpnp::getConfigDirectory (  )  [static]
+
+
+ +

+Get the configuration directory

+This returns the directory, where configuration files are stored.

+

Returns:
the directory of the configuration files.
+ +
+

+ +

+
+ + + + + + + + + +
bool cPluginUpnp::Initialize (void   )  [virtual]
+
+
+ +

+Initializes the plugin

+This initializes any background activities of the plugin.

+

Returns:
returns
    +
  • true, if initializing was successful
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cPluginUpnp::ProcessArgs (int  argc,
char *  argv[] 
) [virtual]
+
+
+ +

+Processes the commandline arguments

+This processes the commandline arguments which the user specified at the start of the plugin.

+

Returns:
returns
    +
  • true, if processing was successful
  • false, otherwise
+
+
Parameters:
+ + + +
argc the number of arguments in the list
argv the arguments as a char array
+
+ +
+

+ +

+
+ + + + + + + + + +
cMenuSetupPage * cPluginUpnp::SetupMenu (void   )  [virtual]
+
+
+ +

+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

+

Returns:
the menu of the plugin
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cPluginUpnp::SetupParse (const char *  Name,
const char *  Value 
) [virtual]
+
+
+ +

+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.

+

Returns:
returns
    +
  • true, if parsing was successful
  • false, otherwise
+
+
Parameters:
+ + + +
Name the name of the variable
Value the according value of the variable
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cPluginUpnp::Start (void   )  [virtual]
+
+
+ +

+Starts the plugin

+This starts the plugin. It starts additional threads, which are required by the plugin.

+

Returns:
returns
    +
  • true, if starting was successful
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
void cPluginUpnp::Stop (void   )  [virtual]
+
+
+ +

+Stops the plugin

+This stops the plugin and all its components +

+

+ +

+
+ + + + + + + + + +
const char * cPluginUpnp::Version (void   )  [virtual]
+
+
+ +

+Get the version of the plugin

+Returns the version string of the plugin

+

Returns:
a string representation of the plugin version
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcPluginUpnp__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cRecordingPlayer Member List

This is the complete list of members for cRecordingPlayer, including all inherited members.

+ + + + + + + + +
close()cRecordingPlayer [virtual]
newInstance(cRecording *Recording)cRecordingPlayer [static]
open(UpnpOpenFileMode mode)cRecordingPlayer [virtual]
read(char *buf, size_t buflen)cRecordingPlayer [virtual]
seek(off_t offset, int origin)cRecordingPlayer [virtual]
write(char *buf, size_t buflen)cRecordingPlayer [virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, private, virtual]
~cRecordingPlayer() (defined in cRecordingPlayer)cRecordingPlayer [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cRecordingPlayer Class Reference + + + + + +
+

cRecordingPlayer Class Reference

#include <recplayer.h> +

+

+Inheritance diagram for cRecordingPlayer:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cRecordingPlayer:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

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 ()

Static Public Member Functions

static cRecordingPlayernewInstance (cRecording *Recording)
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + +
void cRecordingPlayer::close (  )  [virtual]
+
+
+ +

+Closes the open file

+This will close open file handles and frees the memory obtained by it. +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + +
cRecordingPlayer * cRecordingPlayer::newInstance (cRecording *  Recording  )  [static]
+
+
+ +

+Get a new instance of a recording player

+This returns a new instance of a recording player which plays the specified VDR recording.

+

Parameters:
+ + +
Recording the recording to play
+
+
Returns:
the new instance of the recording player
+ +
+

+ +

+
+ + + + + + + + + +
void cRecordingPlayer::open (UpnpOpenFileMode  mode  )  [virtual]
+
+
+ +

+Opens the file

+Opens the file at the given mode. These can be:

    +
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
+

+

Parameters:
+ + +
mode The file mode, i.e. one of the following
    +
  • UPNP_READ
  • UPNP_WRITE
+
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cRecordingPlayer::read (char *  buf,
size_t  buflen 
) [virtual]
+
+
+ +

+Reads from the file

+Reads from the file a certain amount of bytes and stores them in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cRecordingPlayer::seek (off_t  offset,
int  whence 
) [virtual]
+
+
+ +

+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

+

    +
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
+

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
offset The byte offset in the file
whence one of the following
    +
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
+
+
+ +

Implements cFileHandle.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cRecordingPlayer::write (char *  buf,
size_t  buflen 
) [virtual]
+
+
+ +

+Writes to the file

+Writes to the file a certain amount of bytes which are stored in a buffer

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, when reading was successful
+
+
Parameters:
+ + + +
buf The char buffer
buflen The size of the buffer
+
+ +

Implements cFileHandle.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/classcRecordingPlayer__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcRecordingPlayer__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cRegisteredProfile Member List

This is the complete list of members for cRegisteredProfile, including all inherited members.

+ + + +
cDlna (defined in cRegisteredProfile)cRegisteredProfile [friend]
cRegisteredProfile() (defined in cRegisteredProfile)cRegisteredProfile [inline]
~cRegisteredProfile() (defined in cRegisteredProfile)cRegisteredProfile [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cRegisteredProfile Class Reference + + + + + +
+

cRegisteredProfile Class Reference

#include <dlna.h> +

+

+Collaboration diagram for cRegisteredProfile:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + +

Friends

+class cDlna
+


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: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/classcRegisteredProfile__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cRow Member List

This is the complete list of members for cRow, including all inherited members.

+ + + + + +
Count()cRow [inline]
cSQLiteDatabase (defined in cRow)cRow [friend]
fetchColumn(cString *Column, cString *Value)cRow
fetchColumn(char **Column, char **Value)cRow
~cRow() (defined in cRow)cRow [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cRow Class Reference + + + + + +
+

cRow Class Reference

#include <database.h> +

+ +

+List of all members. + + + + + + + + + + + +

Public Member Functions

int Count ()
bool fetchColumn (cString *Column, cString *Value)
bool fetchColumn (char **Column, char **Value)

Friends

+class cSQLiteDatabase
+


Detailed Description

+Result row of a SQL SELECT request

+This is a single row of a {SQL SELECT} request.

+

See also:
cRows
+

Member Function Documentation

+ +
+
+ + + + + + + + +
int cRow::Count (  )  [inline]
+
+
+ +

+Number of columns in this row

+

Returns:
the number of rows
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cRow::fetchColumn (char **  Column,
char **  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.

+

Returns:
returns
    +
  • true, if more columns to come
  • false, if the column is its last in this row.
+
+
Parameters:
+ + + +
Column The name of the current column
Value The value of the current column
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cRow::fetchColumn (cString *  Column,
cString *  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.

+

Returns:
returns
    +
  • true, if more columns to come
  • false, if the column is its last in this row.
+
+
Parameters:
+ + + +
Column The name of the current column
Value The value of the current value
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cRows Member List

This is the complete list of members for cRows, including all inherited members.

+ + + +
cSQLiteDatabase (defined in cRows)cRows [friend]
fetchRow(cRow **Row)cRows
~cRows() (defined in cRows)cRows [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cRows Class Reference + + + + + +
+

cRows Class Reference

#include <database.h> +

+

+Collaboration diagram for cRows:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + +

Public Member Functions

bool fetchRow (cRow **Row)

Friends

+class cSQLiteDatabase
+


Detailed Description

+Result rows of a SQL SELECT request

+Contains the rows of a SQL SELECT request

+

See also:
cRow
+

Member Function Documentation

+ +
+
+ + + + + + + + + +
bool cRows::fetchRow (cRow **  Row  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • true, if more rows to come
  • false, if the row is its last in this resultset.
+
+
Parameters:
+ + +
Row The Pointer of the row
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/classcRows__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cSQLiteDatabase Member List

This is the complete list of members for cSQLiteDatabase, including all inherited members.

+ + + + + + + + + + + + +
commitTransaction()cSQLiteDatabase
cStatement (defined in cSQLiteDatabase)cSQLiteDatabase [friend]
execStatement(const char *Statement,...)cSQLiteDatabase
getInstance()cSQLiteDatabase [static]
getLastInsertRowID() const cSQLiteDatabase
getResultCount() const cSQLiteDatabase [inline]
getResultRows() const cSQLiteDatabase [inline]
rollbackTransaction()cSQLiteDatabase
setAutoCommit(bool Commit=true)cSQLiteDatabase [inline]
sprintf(const char *Format,...)cSQLiteDatabase [static]
startTransaction()cSQLiteDatabase
~cSQLiteDatabase() (defined in cSQLiteDatabase)cSQLiteDatabase [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cSQLiteDatabase Class Reference + + + + + +
+

cSQLiteDatabase Class Reference

#include <database.h> +

+

+Collaboration diagram for cSQLiteDatabase:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

int getResultCount () const
long getLastInsertRowID () const
cRowsgetResultRows () const
int execStatement (const char *Statement,...)
void startTransaction ()
void commitTransaction ()
void rollbackTransaction ()
void setAutoCommit (bool Commit=true)

Static Public Member Functions

static const char * sprintf (const char *Format,...)
static cSQLiteDatabasegetInstance ()

Friends

+class cStatement
+


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 cRows* will be created.


Member Function Documentation

+ +
+
+ + + + + + + + +
void cSQLiteDatabase::commitTransaction (  ) 
+
+
+ +

+Commits a transaction

+This function commits the transaction and writes all changes to the database

+

See also:
cSQLiteDatabase::startTransaction
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cSQLiteDatabase::execStatement (const char *  Statement,
  ... 
)
+
+
+ +

+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 cSQLiteDatabase::sprintf().

+

See also:
cSQLiteDatabase::sprintf().
+
Returns:
returns an integer representing
    +
  • -1, in case of an error
  • 0, when the statement was executed successfuly
+
+
Parameters:
+ + +
Statement Statement to be executed
+
+ +
+

+ +

+
+ + + + + + + + +
cSQLiteDatabase * cSQLiteDatabase::getInstance (  )  [static]
+
+
+ +

+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.

+

Returns:
the database instance
+ +
+

+ +

+
+ + + + + + + + +
long cSQLiteDatabase::getLastInsertRowID (  )  const
+
+
+ +

+The last INSERT RowID

+Returns the primary key of the last inserted row. This will only work if there are no successive calls to the database.

+

Returns:
the last insert RowID
+ +
+

+ +

+
+ + + + + + + + +
int cSQLiteDatabase::getResultCount (  )  const [inline]
+
+
+ +

+Row count of the last result

+Returns the row count of the last {SQL SELECT} request.

+

See also:
cRows
+
Returns:
the result row count
+ +
+

+ +

+
+ + + + + + + + +
cRows* cSQLiteDatabase::getResultRows (  )  const [inline]
+
+
+ +

+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 also:
cRows
+
Returns:
the result rows of the last SELECT statement.
+ +
+

+ +

+
+ + + + + + + + +
void cSQLiteDatabase::rollbackTransaction (  ) 
+
+
+ +

+Performs a rollback on a transaction

+This function performs a rollback. No changes will be made to the database

+

See also:
cSQLiteDatabase::rollbackTransaction
+ +
+

+ +

+
+ + + + + + + + + +
void cSQLiteDatabase::setAutoCommit (bool  Commit = true  )  [inline]
+
+
+ +

+Set the commit behavior

+This function sets the auto commit behavior on new transactions with

See also:
cSQLiteDatabase::startTransaction.
+
    +
  • true, commits the last transaction before starting a new one
  • false, performs a rollback on the old transaction
+
Parameters:
+ + +
Commit Switches the behavior of auto commit
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
const char * cSQLiteDatabase::sprintf (const char *  Format,
  ... 
) [static]
+
+
+ +

+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 printf the following are allowed:

+

    +
  • q, like s, escapes single quotes in strings
  • Q, like q, surrounds the escaped string with additional single quotes
  • z, frees the string after reading and coping it
+

+

See also:
sprintf()
+
Returns:
the formated string
+
Parameters:
+ + +
Format The format string
+
+ +
+

+ +

+
+ + + + + + + + +
void cSQLiteDatabase::startTransaction (  ) 
+
+
+ +

+Starts a transaction

+This starts a new transaction and commits or rolls back a previous.

+

See also:
cSQLiteDatabase::setAutoCommit

+cSQLiteDatabase::commitTransaction

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcSQLiteDatabase__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cSortCriteria Member List

This is the complete list of members for cSortCriteria, including all inherited members.

+ + +
parse(const char *Sort)cSortCriteria [static]
~cSortCriteria() (defined in cSortCriteria)cSortCriteria [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cSortCriteria Class Reference + + + + + +
+

cSortCriteria Class Reference

#include <search.h> +

+

+Collaboration diagram for cSortCriteria:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + +

Static Public Member Functions

static cList< cSortCrit > * parse (const char *Sort)
+


Detailed Description

+Creates a list with sort criteria

+This parser creates a list of sort criteria. It parses the sort criteria string from a Browse or Search request and stores the information in a cSortCrit structure.


Member Function Documentation

+ +
+
+ + + + + + + + + +
cList< cSortCrit > * cSortCriteria::parse (const char *  Sort  )  [static]
+
+
+ +

+Parses the sort criteria

+This parses the sort criteria and returns a list with valid criterias

+

Returns:
returns
    +
  • a list with valid sort criterias
  • null, otherwise
+
+
Parameters:
+ + +
Sort the string container the sort criteria
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/classcSortCriteria__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassContainer Member List

This is the complete list of members for cUPnPClassContainer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addCreateClass(cClass CreateClass)cUPnPClassContainer
addObject(cUPnPClassObject *Object)cUPnPClassContainer
addResource(cUPnPResource *Resource)cUPnPClassObject
addSearchClass(cClass SearchClass)cUPnPClassContainer
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassContainer [virtual]
cUPnPClassContainer()cUPnPClassContainer [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPContainerMediator (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
cUPnPObjectMediator (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
delCreateClass(cClass CreateClass)cUPnPClassContainer
delSearchClass(cClass SearchClass)cUPnPClassContainer
getChildCount() const cUPnPClassContainer [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassContainer [inline, virtual]
getContainerType() const cUPnPClassContainer [inline]
getCreateClasses() const cUPnPClassContainer [inline]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getObject(cUPnPObjectID ID) const cUPnPClassContainer
getObjectList() const cUPnPClassContainer [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassContainer [virtual]
getPropertyList()cUPnPClassContainer [virtual]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getSearchClasses() const cUPnPClassContainer [inline]
getTitle() const cUPnPClassObject [inline]
getUpdateID() const cUPnPClassContainer [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
isSearchable() const cUPnPClassContainer [inline]
isUpdated()cUPnPClassContainer
mChildrencUPnPClassContainer [protected]
mChildrenIDcUPnPClassContainer [protected]
mClasscUPnPClassObject [protected]
mContainerTypecUPnPClassContainer [protected]
mCreateClassescUPnPClassContainer [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSearchablecUPnPClassContainer [protected]
mSearchClassescUPnPClassContainer [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mUpdateIDcUPnPClassContainer [protected]
mWriteStatuscUPnPClassObject [protected]
removeObject(cUPnPClassObject *Object)cUPnPClassContainer
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setContainerType(const char *Type)cUPnPClassContainer
setCreateClasses(std::vector< cClass > CreateClasses)cUPnPClassContainer
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassContainer [virtual]
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSearchable(bool Searchable)cUPnPClassContainer
setSearchClasses(std::vector< cClass > SearchClasses)cUPnPClassContainer
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setUpdateID(unsigned int UID)cUPnPClassContainer [protected]
setWriteStatus(int Status)cUPnPClassObject
update()cUPnPClassContainer [protected]
~cUPnPClassContainer() (defined in cUPnPClassContainer)cUPnPClassContainer [virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassContainer Class Reference + + + + + +
+

cUPnPClassContainer Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassContainer:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassContainer:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

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 cUPnPClassContainergetContainer ()
void addObject (cUPnPClassObject *Object)
void removeObject (cUPnPClassObject *Object)
cUPnPClassObjectgetObject (cUPnPObjectID ID) const
cUPnPObjectsgetObjectList () const
int addSearchClass (cClass SearchClass)
int delSearchClass (cClass SearchClass)
int addCreateClass (cClass CreateClass)
int delCreateClass (cClass CreateClass)
int setContainerType (const char *Type)
int setSearchClasses (std::vector< cClass > SearchClasses)
int setCreateClasses (std::vector< cClass > CreateClasses)
int setSearchable (bool Searchable)
const char * getContainerType () const
const std::vector< cClass > * getSearchClasses () const
const std::vector< cClass > * getCreateClasses () const
bool isSearchable () const
unsigned int getChildCount () const
unsigned int getUpdateID () const
bool isUpdated ()

Protected Member Functions

void update ()
int setUpdateID (unsigned int UID)
 cUPnPClassContainer ()

Protected Attributes

+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.
+cUPnPObjectsmChildren
 List of children.
+cHash< cUPnPClassObject > * mChildrenID
 List of children as hash map.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPContainerMediator
+


Detailed Description

+The UPnP class Container

+This is a UPnP class Container representation with all its properties.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPClassContainer::cUPnPClassContainer (  )  [protected]
+
+
+ +

+Constructor of a container

+This creates a new instance of a container +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cUPnPClassContainer::addCreateClass (cClass  CreateClass  ) 
+
+
+ +

+Add a create class

+This adds a create class to the create classes vector

+

Returns:
returns
    +
  • 0, if adding was successful
  • <0, otherwise
+
+
Parameters:
+ + +
CreateClass the new class to be added
+
+ +
+

+ +

+
+ + + + + + + + + +
void cUPnPClassContainer::addObject (cUPnPClassObject Object  ) 
+
+
+ +

+Add a child

+This adds the specified child to this container. The parent container of the child will be set to this container.

+

Parameters:
+ + +
Object the child to be added
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::addSearchClass (cClass  SearchClass  ) 
+
+
+ +

+Add a search class

+This adds a search class to the search classes vector

+

Returns:
returns
    +
  • 0, if adding was successful
  • <0, otherwise
+
+
Parameters:
+ + +
SearchClass the new class to be added
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
IXML_Node * cUPnPClassContainer::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [virtual]
+
+
+ +

+Create the DIDL fragment

+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

+

Returns:
the DIDL fragment of the object
+
Parameters:
+ + + +
Document the IXML document where to write the contents
Filter the string list with the filter criteria
+
+ +

Implements cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::delCreateClass (cClass  CreateClass  ) 
+
+
+ +

+Remove a create class

+This removes a create class from the create classes vector

+

Returns:
returns
    +
  • 0, if deleting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
CreateClass the class to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::delSearchClass (cClass  SearchClass  ) 
+
+
+ +

+Remove a search class

+This removes a search class from the search classes vector

+

Returns:
returns
    +
  • 0, if deleting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
SearchClass the class to be deleted
+
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPClassContainer::getChildCount (  )  const [inline]
+
+
+ +

+Get the number of children

+This returns the total number of children of this container

+

Returns:
the number of childen
+ +
+

+ +

+
+ + + + + + + + +
virtual cUPnPClassContainer* cUPnPClassContainer::getContainer (  )  [inline, virtual]
+
+
+ +

+Converts to container

+This will convert the object into a container if it is one. If not, it returns NULL.

+

Returns:
returns
    +
  • NULL, if it is not a container
  • a container representation of this object
+
+ +

Reimplemented from cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassContainer::getContainerType (  )  const [inline]
+
+
+ +

+Get the DLNA container type

+This returns the DLNA container type. Currently there are only these possible values beside NULL: TUNER_1_0

Returns:
the DLNA container type
+ +
+

+ +

+
+ + + + + + + + +
const std::vector<cClass>* cUPnPClassContainer::getCreateClasses (  )  const [inline]
+
+
+ +

+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.

+

Returns:
a vector with create classes
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassObject * cUPnPClassContainer::getObject (cUPnPObjectID  ID  )  const
+
+
+ +

+Get a child by ID

+Returns the child, which is specified by the ObjectID.

+

Returns:
the child with the specified ID
+
Parameters:
+ + +
ID the ObjectID of the child
+
+ +
+

+ +

+
+ + + + + + + + +
cUPnPObjects* cUPnPClassContainer::getObjectList (  )  const [inline]
+
+
+ +

+Get the list of children

+This returns a list of the children of the container.

+

Returns:
the list of children
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassContainer::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented from cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassContainer::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented from cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + +
const std::vector<cClass>* cUPnPClassContainer::getSearchClasses (  )  const [inline]
+
+
+ +

+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.

+

Returns:
a vector with all search classes
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPClassContainer::getUpdateID (  )  const [inline]
+
+
+ +

+Get the containerUpdateID

+This returns the containerUpdateID

+

Returns:
the containerUpdateID of this container
+ +
+

+ +

+
+ + + + + + + + +
bool cUPnPClassContainer::isSearchable (  )  const [inline]
+
+
+ +

+Is this container searchable

+This returns true, if the container can be search via Search or false, otherwise.

+

Returns:
returns
    +
  • true, if the container is searchable
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + +
bool cUPnPClassContainer::isUpdated (  ) 
+
+
+ +

+Has the container been updated?

+This returns true, if the container was recently updated or false, otherwise

+

Returns:
returns
    +
  • true, if the container was updated
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
void cUPnPClassContainer::removeObject (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.

+

Parameters:
+ + +
Object the child to be removed
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::setContainerType (const char *  Type  ) 
+
+
+ +

+Set the DLNA container type

+This sets the DLNA container type. It must be a valid container type value.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Type the DLNA container type
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::setCreateClasses (std::vector< cClass CreateClasses  ) 
+
+
+ +

+Sets the create classes

+This sets the create classes, which allows the user to create new objects in this container, if restricted is false.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
CreateClasses a vector containing the create classes
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassContainer::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented from cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::setSearchable (bool  Searchable  ) 
+
+
+ +

+Sets the searchable flag

+This sets the searchable flag, which allows or disallows search on this container.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Searchable true, to enable or false, to disable searching
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::setSearchClasses (std::vector< cClass SearchClasses  ) 
+
+
+ +

+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 derived is set, then also any derived classes are matched.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
SearchClasses a vector container the allowed search classes
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassContainer::setUpdateID (unsigned int  UID  )  [protected]
+
+
+ +

+Sets the containerUpdateID

+This method should only be used when the containerUpdateID is loaded from the database.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
UID the containerUpdateID
+
+ +
+

+ +

+
+ + + + + + + + +
void cUPnPClassContainer::update (  )  [protected]
+
+
+ +

+Update the container

+This performs an update, which acutally increases the containerUpdateID. +

+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassContainer__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcUPnPClassContainer__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassItem Member List

This is the complete list of members for cUPnPClassItem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassItem)cUPnPClassItem [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPItemMediator (defined in cUPnPClassItem)cUPnPClassItem [friend]
cUPnPObjectMediator (defined in cUPnPClassItem)cUPnPClassItem [friend]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassItem [virtual]
getPropertyList()cUPnPClassItem [virtual]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mReferencecUPnPClassItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassItem [virtual]
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassItem Class Reference + + + + + +
+

cUPnPClassItem Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassItem:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassItem:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

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
int setReference (cUPnPClassItem *Reference)
cUPnPClassItemgetReference () const
cUPnPObjectID getReferenceID () const

Protected Member Functions

 cUPnPClassItem ()

Protected Attributes

+cUPnPClassItemmReference
 The reference item.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPItemMediator
+


Detailed Description

+The UPnP class Item

+This is a UPnP class Item representation with all its properties.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPClassItem::cUPnPClassItem (  )  [protected]
+
+
+ +

+Constructor of an item

+This creates a new instance of an item +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
IXML_Node * cUPnPClassItem::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [virtual]
+
+
+ +

+Create the DIDL fragment

+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

+

Returns:
the DIDL fragment of the object
+
Parameters:
+ + + +
Document the IXML document where to write the contents
Filter the string list with the filter criteria
+
+ +

Implements cUPnPClassObject.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassItem::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented from cUPnPClassObject.

+ +

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassItem::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented from cUPnPClassObject.

+ +

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + +
cUPnPClassItem* cUPnPClassItem::getReference (  )  const [inline]
+
+
+ +

+Get the referenced item

+This returns the referenced item of this item

+

Returns:
the referenced item
+ +
+

+ +

+
+ + + + + + + + +
cUPnPObjectID cUPnPClassItem::getReferenceID (  )  const [inline]
+
+
+ +

+Get the reference ID

+This returns the object ID of the referenced item or -1, if no reference exists.

+

Returns:
the reference ID
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassItem::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented from cUPnPClassObject.

+ +

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassItem::setReference (cUPnPClassItem Reference  ) 
+
+
+ +

+Set a reference item

+This sets a reference item. Its comparable with symlinks in *nix systems

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Reference the reference item
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassItem__coll__graph.png 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassItem__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassMovie Member List

This is the complete list of members for cUPnPClassMovie, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassMovie()cUPnPClassMovie [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPMovieMediator (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
cUPnPObjectMediator (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
getActors() const cUPnPClassVideoItem [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getDVDRegionCode() const cUPnPClassMovie [inline]
getGenre() const cUPnPClassVideoItem [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassMovie [virtual]
getPropertyList()cUPnPClassMovie [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getStorageMedium() const cUPnPClassMovie [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mDVDRegionCodecUPnPClassMovie [protected]
mGenrecUPnPClassVideoItem [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mStorageMediumcUPnPClassMovie [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setDVDRegionCode(int RegionCode)cUPnPClassMovie
setGenre(const char *Genre)cUPnPClassVideoItem
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassMovie [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setStorageMedium(const char *StorageMedium)cUPnPClassMovie
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassMovie() (defined in cUPnPClassMovie)cUPnPClassMovie [virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassMovie Class Reference + + + + + +
+

cUPnPClassMovie Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassMovie:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassMovie:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setDVDRegionCode (int RegionCode)
int setStorageMedium (const char *StorageMedium)
int getDVDRegionCode () const
const char * getStorageMedium () const

Protected Member Functions

 cUPnPClassMovie ()

Protected Attributes

+int mDVDRegionCode
 The Region code of the movie (0 - 8).
+cString mStorageMedium
 The storage medium where the movie is stored.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPMovieMediator
+


Detailed Description

+The UPnP class Movie

+This is a UPnP class Movie representation with all its properties.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPClassMovie::cUPnPClassMovie (  )  [protected]
+
+
+ +

+Constructor of a movie

+This creates a new instance of a movie +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + +
int cUPnPClassMovie::getDVDRegionCode (  )  const [inline]
+
+
+ +

+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 ALL is 9.

+

See also:
http://en.wikipedia.org/wiki/DVD_region_code
+
Returns:
the DVD region code
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassMovie::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassMovie::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassMovie::getStorageMedium (  )  const [inline]
+
+
+ +

+Get the storage medium

+This returns the storage medium, where the movie resides.

+

Returns:
the storage medium
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassMovie::setDVDRegionCode (int  RegionCode  ) 
+
+
+ +

+Sets the DVD region code

+For more information on this, see http://en.wikipedia.org/wiki/DVD_region_code

+The integer representation for ALL is 9.

+

See also:
http://en.wikipedia.org/wiki/DVD_region_code
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
RegionCode the region code of this movie
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassMovie::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassMovie::setStorageMedium (const char *  StorageMedium  ) 
+
+
+ +

+Sets the storage medium

+This will set the storage medium, where the movie resides. Valid media are defined in common.h

+

See also:
common.h
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
StorageMedium the medium where the movie is located
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassMovie__coll__graph.png 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassMovie__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassObject Member List

This is the complete list of members for cUPnPClassObject, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassObject)cUPnPClassObject [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)=0cUPnPClassObject [pure virtual]
cUPnPClassContainer (defined in cUPnPClassObject)cUPnPClassObject [friend]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPObjectMediator (defined in cUPnPClassObject)cUPnPClassObject [friend]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassObject [virtual]
getPropertyList()cUPnPClassObject [virtual]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassObject [virtual]
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassObject Class Reference + + + + + +
+

cUPnPClassObject Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassObject:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassObject:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

time_t modified () const
virtual int Compare (const cListObject &ListObject) const
virtual cStringList * getPropertyList ()
virtual bool getProperty (const char *Property, char **Value) const
virtual bool setProperty (const char *Property, const char *Value)
virtual cUPnPClassContainergetContainer ()
virtual IXML_Node * createDIDLFragment (IXML_Document *Document, cStringList *Filter)=0
bool isContainer ()
void setSortCriteria (const char *Property, bool Descending=false)
void clearSortCriteria ()
int setTitle (const char *Title)
int setCreator (const char *Creator)
int setRestricted (bool Restricted)
int setWriteStatus (int Status)
int setResources (cList< cUPnPResource > *Resources)
int addResource (cUPnPResource *Resource)
int removeResource (cUPnPResource *Resource)
cUPnPObjectID getID () const
cUPnPObjectID getParentID () const
cUPnPClassContainergetParent () const
const char * getTitle () const
const char * getClass () const
const char * getCreator () const
bool isRestricted () const
int getWriteStatus () const
cUPnPResourcegetResource (unsigned int ResourceID) const
cList< cUPnPResource > * getResources () const

Protected Member Functions

int setID (cUPnPObjectID ID)
int setParent (cUPnPClassContainer *Parent)
int setClass (const char *Class)
void setModified (void)

Protected Attributes

+time_t mLastModified
 The last modification of this property.
+cUPnPObjectID mID
 The object ID.
+cUPnPClassObjectmParent
 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.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPClassContainer
+


Detailed Description

+The UPnP class Object

+This is a UPnP class Object representation with all its properties.


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cUPnPClassObject::addResource (cUPnPResource Resource  ) 
+
+
+ +

+Add resource to list

+This adds the specified resource to the resource list of the object

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Resource the resource to be added
+
+ +
+

+ +

+
+ + + + + + + + +
void cUPnPClassObject::clearSortCriteria (  ) 
+
+
+ +

+Clears the sort criteria

+Clears the property of the sort criteria and sets the descending flag to false. +

+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::Compare (const cListObject &  ListObject  )  const [virtual]
+
+
+ +

+Compares a object

+This compares a given object with this object It uses the SortCriteria to compare them.

+

Returns:
returns
    +
  • >0, if the object comes after this one
  • 0, if the objects have the same property
  • <0, if the object comes before this one
+
+
Parameters:
+ + +
ListObject the object to compare with
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
virtual IXML_Node* cUPnPClassObject::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [pure virtual]
+
+
+ +

+Create the DIDL fragment

+This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

+

Returns:
the DIDL fragment of the object
+
Parameters:
+ + + +
Document the IXML document where to write the contents
Filter the string list with the filter criteria
+
+ +

Implemented in cUPnPClassItem, and cUPnPClassContainer.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassObject::getClass (  )  const [inline]
+
+
+ +

+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.

+

Returns:
the class of the object
+ +
+

+ +

+
+ + + + + + + + +
virtual cUPnPClassContainer* cUPnPClassObject::getContainer (  )  [inline, virtual]
+
+
+ +

+Converts to container

+This will convert the object into a container if it is one. If not, it returns NULL.

+

Returns:
returns
    +
  • NULL, if it is not a container
  • a container representation of this object
+
+ +

Reimplemented in cUPnPClassContainer.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassObject::getCreator (  )  const [inline]
+
+
+ +

+Get the creator

+This returns the creator of the object. Usually, this is the primary content creator or the owner of the object

+

Returns:
the creator of the object
+ +
+

+ +

+
+ + + + + + + + +
cUPnPObjectID cUPnPClassObject::getID (  )  const [inline]
+
+
+ +

+Get the object ID

+This returns the object ID of the object.

+

Returns:
the object ID
+ +
+

+ +

+
+ + + + + + + + +
cUPnPClassContainer* cUPnPClassObject::getParent (  )  const [inline]
+
+
+ +

+Get the parent object

+This returns the parent container object, associated with this object. It is NULL, if the object is the root object.

+

Returns:
the parent object
+ +
+

+ +

+
+ + + + + + + + +
cUPnPObjectID cUPnPClassObject::getParentID (  )  const [inline]
+
+
+ +

+Get the parent ID

+This returns the ID of the parent container object, associated with this object. It is -1, if the object is the root object.

+

Returns:
the parent ID
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassObject::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassObject::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPResource* cUPnPClassObject::getResource (unsigned int  ResourceID  )  const [inline]
+
+
+ +

+Get a resource by its ID

+Returns the resource with the specified resource ID.

+

Returns:
the resource by ID
+
Parameters:
+ + +
ResourceID the resource ID of the demanded resource
+
+ +
+

+ +

+
+ + + + + + + + +
cList<cUPnPResource>* cUPnPClassObject::getResources (  )  const [inline]
+
+
+ +

+Get the resources

+This returns a list with resources associated with this object.

+

Returns:
the resources of this object
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassObject::getTitle (  )  const [inline]
+
+
+ +

+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.

+

Returns:
the title of the object
+ +
+

+ +

+
+ + + + + + + + +
int cUPnPClassObject::getWriteStatus (  )  const [inline]
+
+
+ +

+Get write status

+This returns the write status of the object. It gives information, if the resource is modifiable.

+

Returns:
the write status
+ +
+

+ +

+
+ + + + + + + + +
bool cUPnPClassObject::isContainer (  )  [inline]
+
+
+ +

+Is this a container?

+Returns if this object is a container or not

+

Returns:
returns
    +
  • true, if it is a container
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + +
bool cUPnPClassObject::isRestricted (  )  const [inline]
+
+
+ +

+Is the resource restricted?

+Returns true, if the object is restricted or false, otherwise. When the object is restricted, then modifications to the metadata of the object are disallowed.

+

Returns:
returns
    +
  • true, if the object is restricted
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + +
time_t cUPnPClassObject::modified (  )  const [inline]
+
+
+ +

+Last modified

+Returns when the object was modified the last time.

+

Returns:
last modification timestamp
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::removeResource (cUPnPResource Resource  ) 
+
+
+ +

+Remove resource from list

+This removes the specified resource from the resource list of the object

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Resource the resource to be removed
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setClass (const char *  Class  )  [protected]
+
+
+ +

+Set the object class

+This is only allowed by mediators and the media database. Manually editing the object class may result in unpredictable behavior.

+

Parameters:
+ + +
Class the class of this object
+
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setCreator (const char *  Creator  ) 
+
+
+ +

+Set the creator

+The creator of an object is primarily the creator or owner of the object

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Creator the creator of the object
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setID (cUPnPObjectID  ID  )  [protected]
+
+
+ +

+Set the Object ID

+This is only allowed by mediators and the media database. Manually editing the object ID may result in unpredictable behavior.

+

Parameters:
+ + +
ID the ObjectID of this object
+
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
void cUPnPClassObject::setModified (void   )  [inline, protected]
+
+
+ +

+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. +

+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setParent (cUPnPClassContainer Parent  )  [protected]
+
+
+ +

+Set the Parent Object

+This is only allowed by mediators and the media database. Manually editing the parent may result in unpredictable behavior.

+

Parameters:
+ + +
Parent the parent of this object
+
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassObject::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setResources (cList< cUPnPResource > *  Resources  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Resources the resource list of this object
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setRestricted (bool  Restricted  ) 
+
+
+ +

+Set the restriction

+This sets the restriction flag. If the object is restricted, no modifications to its metadata by the user are allowed.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Restricted true, to disallow modification, false to allow it
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cUPnPClassObject::setSortCriteria (const char *  Property,
bool  Descending = false 
)
+
+
+ +

+Set the sort criteria

+This sets a certain criteria which the object can be compared with.

+

Parameters:
+ + + +
Property the property to sort after
Descending sort the objects in descending order
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setTitle (const char *  Title  ) 
+
+
+ +

+Set the title

+This sets the title of the object. It is a required metadata information. It must not be NULL or an empty string.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Title the title of the object
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassObject::setWriteStatus (int  Status  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Status the write status
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/classcUPnPClassObject__coll__graph.png 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 @@ + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassObject__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassVideoBroadcast Member List

This is the complete list of members for cUPnPClassVideoBroadcast, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoBroadcast()cUPnPClassVideoBroadcast [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPObjectMediator (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
cUPnPVideoBroadcastMediator (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
getActors() const cUPnPClassVideoItem [inline]
getChannelName() const cUPnPClassVideoBroadcast [inline]
getChannelNr() const cUPnPClassVideoBroadcast [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getGenre() const cUPnPClassVideoItem [inline]
getIcon() const cUPnPClassVideoBroadcast [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassVideoBroadcast [virtual]
getPropertyList()cUPnPClassVideoBroadcast [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRegion() const cUPnPClassVideoBroadcast [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mChannelNamecUPnPClassVideoBroadcast [protected]
mChannelNrcUPnPClassVideoBroadcast [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mGenrecUPnPClassVideoItem [protected]
mIconcUPnPClassVideoBroadcast [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRegioncUPnPClassVideoBroadcast [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setChannelName(const char *ChannelName)cUPnPClassVideoBroadcast
setChannelNr(int ChannelNr)cUPnPClassVideoBroadcast
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setGenre(const char *Genre)cUPnPClassVideoItem
setIcon(const char *IconURI)cUPnPClassVideoBroadcast
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassVideoBroadcast [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRegion(const char *Region)cUPnPClassVideoBroadcast
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoBroadcast() (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassVideoBroadcast Class Reference + + + + + +
+

cUPnPClassVideoBroadcast Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassVideoBroadcast:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassVideoBroadcast:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setIcon (const char *IconURI)
int setRegion (const char *Region)
int setChannelNr (int ChannelNr)
int setChannelName (const char *ChannelName)
const char * getIcon () const
const char * getRegion () const
int getChannelNr () const
const char * getChannelName () const

Protected Member Functions

 cUPnPClassVideoBroadcast ()

Protected Attributes

+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.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPVideoBroadcastMediator
+


Detailed Description

+The UPnP class VideoBroadcast

+This is a UPnP class VideoBroadcast representation with all its properties.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast (  )  [protected]
+
+
+ +

+Constructor of a video broadcast

+This creates a new instance of a video broadcast +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + +
const char* cUPnPClassVideoBroadcast::getChannelName (  )  const [inline]
+
+
+ +

+Get the channel name

+This returns the channel name or provider name respectively

+

Returns:
the channel name
+ +
+

+ +

+
+ + + + + + + + +
int cUPnPClassVideoBroadcast::getChannelNr (  )  const [inline]
+
+
+ +

+Get the channel number

+This returns the channel number

+

Returns:
the channel number
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoBroadcast::getIcon (  )  const [inline]
+
+
+ +

+Get the channel icon

+This returns the channel icon of the channel.

+

Returns:
the channel icon
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassVideoBroadcast::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassVideoBroadcast::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoBroadcast::getRegion (  )  const [inline]
+
+
+ +

+Get the region

+This returns the region, where the channel can be received

+

Returns:
the channel region
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoBroadcast::setChannelName (const char *  ChannelName  ) 
+
+
+ +

+Set the channel name

+This sets the channel name or the provider of the channel.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
ChannelName the channel name
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoBroadcast::setChannelNr (int  ChannelNr  ) 
+
+
+ +

+Set channel number

+This sets the channel number, so that it can be used for directly navigation or channel up and down navigation respectively.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
ChannelNr the channel number
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoBroadcast::setIcon (const char *  IconURI  ) 
+
+
+ +

+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

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
IconURI the URI to the icon file
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassVideoBroadcast::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented from cUPnPClassVideoItem.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoBroadcast::setRegion (const char *  Region  ) 
+
+
+ +

+Set the channel region

+This sets the region of a channel, where it can be received

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Region the location where the channel can be received
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPClassVideoItem Member List

This is the complete list of members for cUPnPClassVideoItem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPObjectMediator (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
cUPnPVideoItemMediator (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
getActors() const cUPnPClassVideoItem [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getGenre() const cUPnPClassVideoItem [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassVideoItem [virtual]
getPropertyList()cUPnPClassVideoItem [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mGenrecUPnPClassVideoItem [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setGenre(const char *Genre)cUPnPClassVideoItem
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassVideoItem [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPClassVideoItem Class Reference + + + + + +
+

cUPnPClassVideoItem Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPClassVideoItem:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPClassVideoItem:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setLongDescription (const char *LongDescription)
int setDescription (const char *Description)
int setPublishers (const char *Publishers)
int setGenre (const char *Genre)
int setLanguage (const char *Language)
int setRelations (const char *Relations)
int setDirectors (const char *Directors)
int setActors (const char *Actors)
int setProducers (const char *Producers)
int setRating (const char *Rating)
const char * getGenre () const
const char * getLongDescription () const
const char * getDescription () const
const char * getPublishers () const
const char * getLanguage () const
const char * getRelations () const
const char * getActors () const
const char * getProducers () const
const char * getDirectors () const
const char * getRating () const

Protected Member Functions

 cUPnPClassVideoItem ()

Protected Attributes

+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.

Friends

+class cMediaDatabase
+class cUPnPObjectMediator
+class cUPnPVideoItemMediator
+


Detailed Description

+The UPnP class VideoItem

+This is a UPnP class VideoItem representation with all its properties.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPClassVideoItem::cUPnPClassVideoItem (  )  [protected]
+
+
+ +

+Constructor of a video item

+This creates a new instance of a video item +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getActors (  )  const [inline]
+
+
+ +

+Get the actors

+This returns a CSV list of actors in the video

+

Returns:
a CSV list of actors
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getDescription (  )  const [inline]
+
+
+ +

+Get the description

+This returns the description of a video

+

Returns:
the description of a video
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getDirectors (  )  const [inline]
+
+
+ +

+Get the directors

+This returns a CSV list of directors

+

Returns:
a CSV list of directors
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getGenre (  )  const [inline]
+
+
+ +

+Get the genres

+This returns a CSV list of genre

+

Returns:
the genre of a video
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getLanguage (  )  const [inline]
+
+
+ +

+Get the language

+This returns the language of the video

+

Returns:
the language
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getLongDescription (  )  const [inline]
+
+
+ +

+Get the long description

+This returns the long description of a video

+

Returns:
the long description of a video
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getProducers (  )  const [inline]
+
+
+ +

+Get the producers

+This returns a CSV list of producers of a video

+

Returns:
a CSV list of producers
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassVideoItem::getProperty (const char *  Property,
char **  Value 
) const [virtual]
+
+
+ +

+Gets a property

+Returns the value of a specified property. The value is converted into a string.

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be returned
Value the value of that property
+
+ +

Reimplemented from cUPnPClassItem.

+ +

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + +
cStringList * cUPnPClassVideoItem::getPropertyList (  )  [virtual]
+
+
+ +

+Get the properties of the object

+This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

+

Returns:
a stringlist with the properties
+ +

Reimplemented from cUPnPClassItem.

+ +

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getPublishers (  )  const [inline]
+
+
+ +

+Get the publishers

+This returns a CSV list of publishers of the video

+

Returns:
a CSV list of publishers
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getRating (  )  const [inline]
+
+
+ +

+Get the rating

+This returns the rating used for parental control.

+

Returns:
the rating of a video
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPClassVideoItem::getRelations (  )  const [inline]
+
+
+ +

+Get the relations

+This returns a CSV list of relation URLs.

+

Returns:
a CSV list of relation URLs
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setActors (const char *  Actors  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Actors a CSV list of actors
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setDescription (const char *  Description  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Description the description of a video
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setDirectors (const char *  Directors  ) 
+
+
+ +

+Sets the directors

+This sets a CSV list of directors.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Directors a CSV list of directors
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setGenre (const char *  Genre  ) 
+
+
+ +

+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.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Genre a CSV list of genre
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setLanguage (const char *  Language  ) 
+
+
+ +

+Set the language

+This sets the language of a video. It is defined by RFC 1766. A valid language definition is "de-DE" or "en-US".

+

See also:
http://www.ietf.org/rfc/rfc1766.txt
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Language the language (RFC 1766)
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setLongDescription (const char *  LongDescription  ) 
+
+
+ +

+Set a long description

+A long description may hold information about the content or the story of a video

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
LongDescription the content or story of a video
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setProducers (const char *  Producers  ) 
+
+
+ +

+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

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Producers a CSV list of producers
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPClassVideoItem::setProperty (const char *  Property,
const char *  Value 
) [virtual]
+
+
+ +

+Sets a property

+Sets the value of a specified property. The value is converted from string into the propper data type

+

Returns:
returns
    +
  • true, if the property exists
  • false, otherwise
+
+
Parameters:
+ + + +
Property the property which should be set
Value the value of that property
+
+ +

Reimplemented from cUPnPClassItem.

+ +

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setPublishers (const char *  Publishers  ) 
+
+
+ +

+Set the publishers

+This is a CSV list of publishers, who distributes the video.

+

Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Publishers a CSV list of publishers
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setRating (const char *  Rating  ) 
+
+
+ +

+Sets the rating

+This is a rating, which can be used for parential control issues.

+

See also:
http://en.wikipedia.org/wiki/Motion_picture_rating_system
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Rating the rating of a video
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPClassVideoItem::setRelations (const char *  Relations  ) 
+
+
+ +

+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 also:
http://www.ietf.org/rfc/rfc2396.txt
+
Returns:
returns
    +
  • 0, if setting was successful
  • <0, otherwise
+
+
Parameters:
+ + +
Relations a CSV list with relations
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassVideoItem__coll__graph.png 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPClassVideoItem__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPConfig Member List

This is the complete list of members for cUPnPConfig, including all inherited members.

+ + + + + + + + + +
get()cUPnPConfig [static]
mAddresscUPnPConfig
mAutoSetupcUPnPConfig
mEnablecUPnPConfig
mInterfacecUPnPConfig
mPortcUPnPConfig
parseSetup(const char *Name, const char *Value)cUPnPConfig
processArgs(int argc, char *argv[])cUPnPConfig
~cUPnPConfig() (defined in cUPnPConfig)cUPnPConfig [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPConfig Class Reference + + + + + +
+

cUPnPConfig Class Reference

#include <config.h> +

+

+Collaboration diagram for cUPnPConfig:
+
+

Collaboration graph
+
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

bool parseSetup (const char *Name, const char *Value)
bool processArgs (int argc, char *argv[])

Static Public Member Functions

static cUPnPConfigget ()

Public Attributes

+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
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + +
cUPnPConfig * cUPnPConfig::get (  )  [static]
+
+
+ +

+Get the configuration

+This returns the instance of the current configuration settings.

+

Returns:
the configuration object
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPConfig::parseSetup (const char *  Name,
const char *  Value 
)
+
+
+ +

+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.

+

Returns:
returns
    +
  • true, if parsing was successful
  • false, otherwise
+
+
Parameters:
+ + + +
Name the name of the variable
Value the according value of the variable
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool cUPnPConfig::processArgs (int  argc,
char *  argv[] 
)
+
+
+ +

+Processes the commandline arguments

+This processes the commandline arguments which the user specified at the start of the plugin.

+

Returns:
returns
    +
  • true, if processing was successful
  • false, otherwise
+
+
Parameters:
+ + + +
argc the number of arguments in the list
argv the arguments as a char array
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/classcUPnPConfig__coll__graph.map b/doc/html/classcUPnPConfig__coll__graph.map new file mode 100644 index 0000000..e69de29 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 Binary files /dev/null and b/doc/html/classcUPnPConfig__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPContainerMediator Member List

This is the complete list of members for cUPnPContainerMediator, including all inherited members.

+ + + + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPContainerMediator [virtual]
cUPnPContainerMediator(cMediaDatabase *MediaDatabase)cUPnPContainerMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPContainerMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPContainerMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPContainerMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPContainerMediator() (defined in cUPnPContainerMediator)cUPnPContainerMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPContainerMediator Class Reference + + + + + +
+

cUPnPContainerMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPContainerMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPContainerMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 cUPnPContainerMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassContainercreateObject (const char *Title, bool Restricted)
virtual cUPnPClassContainergetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPContainerMediator::cUPnPContainerMediator (cMediaDatabase MediaDatabase  ) 
+
+
+ +

+Constructor of container mediator

+This creates a new container mediator with which it is possible to create new instances of Container objects.

+

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassContainer * cUPnPContainerMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPContainerMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassContainer * cUPnPContainerMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPContainerMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPContainerMediator__coll__graph.png 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcUPnPContainerMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPItemMediator Member List

This is the complete list of members for cUPnPItemMediator, including all inherited members.

+ + + + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPItemMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPItemMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPItemMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPItemMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPItemMediator Class Reference + + + + + +
+

cUPnPItemMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPItemMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPItemMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 cUPnPItemMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassItemcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassItemgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPItemMediator::cUPnPItemMediator (cMediaDatabase MediaDatabase  ) 
+
+
+ +

+Constructor of item mediator

+This creates a new item mediator with which it is possible to create new instances of Item objects.

+

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassItem * cUPnPItemMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPItemMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassItem * cUPnPItemMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPItemMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented from cUPnPObjectMediator.

+ +

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPItemMediator__coll__graph.png 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 @@ + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPItemMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPMovieMediator Member List

This is the complete list of members for cUPnPMovieMediator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPMovieMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPMovieMediator(cMediaDatabase *MediaDatabase)cUPnPMovieMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPMovieMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPMovieMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPMovieMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPMovieMediator() (defined in cUPnPMovieMediator)cUPnPMovieMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPMovieMediator Class Reference + + + + + +
+

cUPnPMovieMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPMovieMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPMovieMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 cUPnPMovieMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassMoviecreateObject (const char *Title, bool Restricted)
virtual cUPnPClassMoviegetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPMovieMediator::cUPnPMovieMediator (cMediaDatabase MediaDatabase  ) 
+
+
+ +

+Constructor of movie mediator

+This creates a new movie mediator with which it is possible to create new instances of Movie objects.

+

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassMovie * cUPnPMovieMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPMovieMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassMovie * cUPnPMovieMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPMovieMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPMovieMediator__coll__graph.png 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPMovieMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPObjectFactory Member List

This is the complete list of members for cUPnPObjectFactory, including all inherited members.

+ + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectFactory
createObject(const char *UPnPClass, const char *Title, bool Restricted=true)cUPnPObjectFactory
deleteObject(cUPnPClassObject *Object)cUPnPObjectFactory
getInstance()cUPnPObjectFactory [static]
getObject(cUPnPObjectID ID)cUPnPObjectFactory
registerMediator(const char *UPnPClass, cMediatorInterface *Mediator)cUPnPObjectFactory
saveObject(cUPnPClassObject *Object)cUPnPObjectFactory
unregisterMediator(const char *UPnPClass, bool freeMediator=true)cUPnPObjectFactory

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPObjectFactory Class Reference + + + + + +
+

cUPnPObjectFactory Class Reference

#include <object.h> +

+

+Collaboration diagram for cUPnPObjectFactory:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

void registerMediator (const char *UPnPClass, cMediatorInterface *Mediator)
void unregisterMediator (const char *UPnPClass, bool freeMediator=true)
cUPnPClassObjectcreateObject (const char *UPnPClass, const char *Title, bool Restricted=true)
cUPnPClassObjectgetObject (cUPnPObjectID ID)
int saveObject (cUPnPClassObject *Object)
int deleteObject (cUPnPClassObject *Object)
int clearObject (cUPnPClassObject *Object)

Static Public Member Functions

static cUPnPObjectFactorygetInstance ()
+


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 cMediatorInterface class to work with this factory.


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cUPnPObjectFactory::clearObject (cUPnPClassObject Object  ) 
+
+
+ +

+Clears the object

+This clears the object, i.e. all its children will be removed and deleted from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be cleared
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
cUPnPClassObject * cUPnPObjectFactory::createObject (const char *  UPnPClass,
const char *  Title,
bool  Restricted = true 
)
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+

+

Parameters:
+ + +
UPnPClass the class of the new object
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPObjectFactory::deleteObject (cUPnPClassObject Object  ) 
+
+
+ +

+Deletes the object

+This deletes the object in the database by removing all its children and then deleting the contents from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be deleted
+
+ +
+

+ +

+
+ + + + + + + + +
cUPnPObjectFactory * cUPnPObjectFactory::getInstance (  )  [static]
+
+
+ +

+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.

+

Returns:
the instance of the factory
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassObject * cUPnPObjectFactory::getObject (cUPnPObjectID  ID  ) 
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cUPnPObjectFactory::registerMediator (const char *  UPnPClass,
cMediatorInterface Mediator 
)
+
+
+ +

+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.

+

Parameters:
+ + + +
UPnPClass the class of which the mediator is associated to
Mediator the mediator itself
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPObjectFactory::saveObject (cUPnPClassObject Object  ) 
+
+
+ +

+Saves the object

+This saves the object in the database by updating the values in the database with those in the object.

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cUPnPObjectFactory::unregisterMediator (const char *  UPnPClass,
bool  freeMediator = true 
)
+
+
+ +

+Unregisters a mediator

+This unregisters a mediator if it is not needed anylonger. If the optional parameter freeMediator is set, the object instance will be free'd after removing it from the list.

+

Parameters:
+ + + +
UPnPClass the class of the associated mediator
freeMediator flag to indicate if the mediator shall be free'd after removing
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPObjectFactory__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPObjectMediator Member List

This is the complete list of members for cUPnPObjectMediator, including all inherited members.

+ + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPObjectMediator [virtual]
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPObjectMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPObjectMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPObjectMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPObjectMediator Class Reference + + + + + +
+

cUPnPObjectMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPObjectMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPObjectMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual cUPnPClassObjectcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassObjectgetObject (cUPnPObjectID ID)
virtual int saveObject (cUPnPClassObject *Object)
virtual int deleteObject (cUPnPClassObject *Object)
virtual int clearObject (cUPnPClassObject *Object)

Protected Member Functions

 cUPnPObjectMediator (cMediaDatabase *MediaDatabase)
virtual int initializeObject (cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)
virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)

Protected Attributes

+cSQLiteDatabasemDatabase
 the SQLite 3 database wrapper
+cMediaDatabasemMediaDatabase
 the media database
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPObjectMediator::cUPnPObjectMediator (cMediaDatabase MediaDatabase  )  [protected]
+
+
+ +

+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

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cUPnPObjectMediator::clearObject (cUPnPClassObject Object  )  [virtual]
+
+
+ +

+Clears the object

+This clears the object, i.e. all its children will be removed and deleted from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be cleared
+
+ +

Implements cMediatorInterface.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassObject * cUPnPObjectMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Implements cMediatorInterface.

+ +

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPObjectMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPObjectMediator::deleteObject (cUPnPClassObject Object  )  [virtual]
+
+
+ +

+Deletes the object

+This deletes the object in the database by removing all its children and then deleting the contents from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be deleted
+
+ +

Implements cMediatorInterface.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassObject * cUPnPObjectMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Implements cMediatorInterface.

+ +

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int cUPnPObjectMediator::initializeObject (cUPnPClassObject Object,
const char *  Class,
const char *  Title,
bool  Restricted 
) [protected, virtual]
+
+
+ +

+Initializes an object

+This initializes an object, which means, that it will be created in the database with the required details.

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + + + +
Object the object to be initialized
Class the class of the object
Title the title of the object
Restricted restriction of the object
+
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPObjectMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPObjectMediator::saveObject (cUPnPClassObject Object  )  [virtual]
+
+
+ +

+Saves the object

+This saves the object in the database by updating the values in the database with those in the object.

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Implements cMediatorInterface.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPObjectMediator__coll__graph.png 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 @@ + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPObjectMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPObjects Member List

This is the complete list of members for cUPnPObjects, including all inherited members.

+ + + +
cUPnPObjects() (defined in cUPnPObjects)cUPnPObjects
SortBy(const char *Property, bool Descending=false)cUPnPObjects
~cUPnPObjects() (defined in cUPnPObjects)cUPnPObjects [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPObjects Class Reference + + + + + +
+

cUPnPObjects Class Reference

#include <object.h> +

+ +

+List of all members. + + + + +

Public Member Functions

void SortBy (const char *Property, bool Descending=false)
+


Detailed Description

+List of UPnP Objects

+This is a cList of UPnP Objects The list can be sorted by using a specific property


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void cUPnPObjects::SortBy (const char *  Property,
bool  Descending = false 
)
+
+
+ +

+Sorts the list

+This sorts the list by a specific property and a certain direction

Parameters:
+ + + +
Property the property used for sorting
Descending the direction of the sort
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPResource Member List

This is the complete list of members for cUPnPResource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
cAudioVideoDetector (defined in cUPnPResource)cUPnPResource [friend]
cUPnPResourceMediator (defined in cUPnPResource)cUPnPResource [friend]
cUPnPResources (defined in cUPnPResource)cUPnPResource [friend]
getBitrate() const cUPnPResource [inline]
getBitsPerSample() const cUPnPResource [inline]
getColorDepth() const cUPnPResource [inline]
getContentType() const cUPnPResource [inline]
getDuration() const cUPnPResource [inline]
getFileSize() const cUPnPResource
getID() const cUPnPResource [inline]
getImportURI() const cUPnPResource [inline]
getLastModification() const cUPnPResource
getNrAudioChannels() const cUPnPResource [inline]
getProtocolInfo() const cUPnPResource [inline]
getResolution() const cUPnPResource [inline]
getResource() const cUPnPResource [inline]
getResourceType() const cUPnPResource [inline]
getSampleFrequency() const cUPnPResource [inline]
getSize() const cUPnPResource [inline]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPResource Class Reference + + + + + +
+

cUPnPResource Class Reference

#include <object.h> +

+

+Collaboration diagram for cUPnPResource:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

unsigned int getID () const
const char * getResource () const
const char * getDuration () const
const char * getResolution () const
const char * getProtocolInfo () const
const char * getContentType () const
const char * getImportURI () const
int getResourceType () const
unsigned long getSize () const
off64_t getFileSize () const
time_t getLastModification () const
unsigned int getBitrate () const
unsigned int getSampleFrequency () const
unsigned int getBitsPerSample () const
unsigned int getNrAudioChannels () const
unsigned int getColorDepth () const

Friends

+class cUPnPResourceMediator
+class cUPnPResources
+class cAudioVideoDetector
+


Detailed Description

+UPnP Resource

+This contains all details about a resource


Member Function Documentation

+ +
+
+ + + + + + + + +
unsigned int cUPnPResource::getBitrate (  )  const [inline]
+
+
+ +

+Get the bitrate

+This returns the bitrate of the resource in bits per second.

+

Returns:
the bitrate of the resource
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPResource::getBitsPerSample (  )  const [inline]
+
+
+ +

+Get the bits per sample

+Returns the number of bits per sample.

+

Returns:
the bits per sample of the resource
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPResource::getColorDepth (  )  const [inline]
+
+
+ +

+Get the color depth

+Returns the color depth of the resource in pits per pixel

+

Returns:
the color depth of the resource
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getContentType (  )  const [inline]
+
+
+ +

+Get the content type

+Returns the mime type of the content of the resource

+

Returns:
the content type of the resource
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getDuration (  )  const [inline]
+
+
+ +

+Get the duration

+Returns a date time string with the duration of the resource

+

Returns:
the duration of the resource
+ +
+

+ +

+
+ + + + + + + + +
off64_t cUPnPResource::getFileSize (  )  const
+
+
+ +

+Get the file size

+Returns the file size in bytes of the resource or 0 if its unknown or a stream

+

Returns:
the file size
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPResource::getID (  )  const [inline]
+
+
+ +

+Get resource ID

+Gets the resource ID

+

Returns:
the resource ID
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getImportURI (  )  const [inline]
+
+
+ +

+Get the import URI

+This returns the import URI where the resource was located before importing it

+

Returns:
the import URI
+ +
+

+ +

+
+ + + + + + + + +
time_t cUPnPResource::getLastModification (  )  const
+
+
+ +

+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.

+

Returns:
the timestamp with the last modification of the resource
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPResource::getNrAudioChannels (  )  const [inline]
+
+
+ +

+Get number of audio channels

+Returns the number of audio channels of the audio stream in a video

+

Returns:
the number of audio channels
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getProtocolInfo (  )  const [inline]
+
+
+ +

+Get the protocol info

+This returns the protocol info field of a resource

+

Returns:
the protocol info string
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getResolution (  )  const [inline]
+
+
+ +

+Get the resolution

+Returns the resolution string with the pattern width x height in pixels

+

Returns:
the resolution of the resource
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPResource::getResource (  )  const [inline]
+
+
+ +

+Get the resources

+Returns the resource. This is in most cases the file name or resource locator where to find the resource

+

Returns:
the resource string
+ +
+

+ +

+
+ + + + + + + + +
int cUPnPResource::getResourceType (  )  const [inline]
+
+
+ +

+Get the resource type

+This returns the resource type of the resource.

+

Returns:
the resource type
+ +
+

+ +

+
+ + + + + + + + +
unsigned int cUPnPResource::getSampleFrequency (  )  const [inline]
+
+
+ +

+Get the sample frequency

+Returns the sample frequency in samples per second.

+

Returns:
the sample frequency of the resource
+ +
+

+ +

+
+ + + + + + + + +
unsigned long cUPnPResource::getSize (  )  const [inline]
+
+
+ +

+Get the size

+Returns the resource size or -1 if its unknown

+

Returns:
the resource size or -1 if unknown
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPResourceMediator Member List

This is the complete list of members for cUPnPResourceMediator, including all inherited members.

+ + + + + +
cUPnPResources (defined in cUPnPResourceMediator)cUPnPResourceMediator [friend]
getResource(unsigned int ResourceID)cUPnPResourceMediator
newResource(cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)cUPnPResourceMediator
saveResource(cUPnPResource *Resource)cUPnPResourceMediator
~cUPnPResourceMediator() (defined in cUPnPResourceMediator)cUPnPResourceMediator [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPResourceMediator Class Reference + + + + + +
+

cUPnPResourceMediator Class Reference

#include <resources.h> +

+

+Collaboration diagram for cUPnPResourceMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + +

Public Member Functions

cUPnPResourcegetResource (unsigned int ResourceID)
int saveResource (cUPnPResource *Resource)
cUPnPResourcenewResource (cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)

Friends

+class cUPnPResources
+


Detailed Description

+The resource mediator

+This is another mediator which communicates with the database. It manages the resources in the database


Member Function Documentation

+ +
+
+ + + + + + + + + +
cUPnPResource * cUPnPResourceMediator::getResource (unsigned int  ResourceID  ) 
+
+
+ +

+Get a resource by ID

+This returns a resource by its resource ID

+

Parameters:
+ + +
ResourceID the resource ID of the demanded resource
+
+
Returns:
the requested resource
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cUPnPResource * cUPnPResourceMediator::newResource (cUPnPClassObject Object,
int  ResourceType,
cString  ResourceFile,
cString  ContentType,
cString  ProtocolInfo 
)
+
+
+ +

+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.

+

Parameters:
+ + + + + + +
Object the Object which will hold the resource
ResourceType the type of the resource
ResourceFile the file or URL, where the resource can be located
ContentType the mime type of the content
ProtocolInfo the protocol information of the resource
+
+
Returns:
the newly created resource
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPResourceMediator::saveResource (cUPnPResource Resource  ) 
+
+
+ +

+Saves the resource

+This updates the information in the database with those in the resource object

+

Parameters:
+ + +
Resource the resource which shall be saved
+
+
Returns:
returns
    +
  • 0, if saving was successful
  • <0, if an error occured
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + 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 Binary files /dev/null and b/doc/html/classcUPnPResourceMediator__coll__graph.png 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 @@ + 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 Binary files /dev/null and b/doc/html/classcUPnPResource__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPResources Member List

This is the complete list of members for cUPnPResources, including all inherited members.

+ + + + + + + + +
createFromChannel(cUPnPClassVideoBroadcast *Object, cChannel *Channel)cUPnPResources
createFromFile(cUPnPClassItem *Object, cString File)cUPnPResources
createFromRecording(cUPnPClassVideoItem *Object, cRecording *Recording)cUPnPResources
getInstance()cUPnPResources [static]
getResource(unsigned int ResourceID)cUPnPResources
getResourcesOfObject(cUPnPClassObject *Object)cUPnPResources
loadResources()cUPnPResources
~cUPnPResources() (defined in cUPnPResources)cUPnPResources [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPResources Class Reference + + + + + +
+

cUPnPResources Class Reference

#include <resources.h> +

+

+Collaboration diagram for cUPnPResources:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

int getResourcesOfObject (cUPnPClassObject *Object)
int loadResources ()
cUPnPResourcegetResource (unsigned int ResourceID)
int createFromChannel (cUPnPClassVideoBroadcast *Object, cChannel *Channel)
int createFromRecording (cUPnPClassVideoItem *Object, cRecording *Recording)
int createFromFile (cUPnPClassItem *Object, cString File)

Static Public Member Functions

static cUPnPResourcesgetInstance ()
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int cUPnPResources::createFromChannel (cUPnPClassVideoBroadcast Object,
cChannel *  Channel 
)
+
+
+ +

+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.

+

Parameters:
+ + + +
Object the videoBroadcast item which holds the resource
Channel the VDR TV channel
+
+
Returns:
returns
    +
  • 0, if loading was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPResources::createFromFile (cUPnPClassItem Object,
cString  File 
)
+
+
+ +

+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.

+

Parameters:
+ + + +
Object the item which holds the resource
File the file name
+
+
Returns:
returns
    +
  • 0, if loading was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPResources::createFromRecording (cUPnPClassVideoItem Object,
cRecording *  Recording 
)
+
+
+ +

+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.

+

Parameters:
+ + + +
Object the videoItem item which holds the resource
Recording the VDR TV recording
+
+
Returns:
returns
    +
  • 0, if loading was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + +
cUPnPResources * cUPnPResources::getInstance (  )  [static]
+
+
+ +

+Get the instance of the resource manager

+This returns the instance of the resource manager.

+

Returns:
the instance of the manager
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPResource * cUPnPResources::getResource (unsigned int  ResourceID  ) 
+
+
+ +

+Get a resource by ID

+This returns a resource by its resource ID

+

Parameters:
+ + +
ResourceID the resource ID of the demanded resource
+
+
Returns:
the requested resource
+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPResources::getResourcesOfObject (cUPnPClassObject Object  ) 
+
+
+ +

+Fill object with its resources

+This will load all the resources from the database, which are associated to the given object

+

Parameters:
+ + +
Object the object, which shall be filled
+
+
Returns:
returns
    +
  • 0, if loading was successful
  • <0, otherwise
+
+ +
+

+ +

+
+ + + + + + + + +
int cUPnPResources::loadResources (  ) 
+
+
+ +

+Loads all resources from database

+This loads all resources from the database into the internal cache.

+

Returns:
returns
    +
  • 0, if loading was successful
  • <0, otherwise
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPResources__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPServer Member List

This is the complete list of members for cUPnPServer, including all inherited members.

+ + + + + + + + + + + + + + + + + +
autoDetectSettings(void)cUPnPServer
cPluginUpnp (defined in cUPnPServer)cUPnPServer [friend]
cUPnPServer()cUPnPServer
enable(bool enabled)cUPnPServer
getInterface(void) const cUPnPServer [inline]
getServerAddress(void)cUPnPServer
isAutoDetectionEnabled()cUPnPServer [inline]
isEnabled(void) const cUPnPServer [inline]
isRunning(void) const cUPnPServer [inline]
restart(void)cUPnPServer
setAddress(const char *Address)cUPnPServer
setAutoDetection(bool enable)cUPnPServer
setInterface(const char *Interface)cUPnPServer
setServerPort(unsigned short port)cUPnPServer
start(void)cUPnPServer
stop(void)cUPnPServer
~cUPnPServer()cUPnPServer [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPServer Class Reference + + + + + +
+

cUPnPServer Class Reference

#include <server.h> +

+

+Collaboration diagram for cUPnPServer:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 cUPnPServer ()
virtual ~cUPnPServer ()
void enable (bool enabled)
bool start (void)
bool restart (void)
void stop (void)
bool autoDetectSettings (void)
sockaddr_in * getServerAddress (void)
const char * getInterface (void) const
bool setServerPort (unsigned short port)
bool setInterface (const char *Interface)
bool setAddress (const char *Address)
bool setAutoDetection (bool enable)
bool isEnabled (void) const
bool isRunning (void) const
bool isAutoDetectionEnabled ()

Friends

+class cPluginUpnp
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPServer::cUPnPServer (  ) 
+
+
+ +

+Constructor

+This will create a new server and initializes the main functionalities The server has to be started manually by invoking cUPnPServer::start(). +

+

+ +

+
+ + + + + + + + +
cUPnPServer::~cUPnPServer (  )  [virtual]
+
+
+ +

+Destructor

+This will destroy the server object. Open ports and connections will be closed. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool cUPnPServer::autoDetectSettings (void   ) 
+
+
+ +

+Automatically detect settings

+This will automatically detect the network settings if the autodetection is turned on.

+

Returns:
returns
    +
  • true, if autoDetection was successful
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
void cUPnPServer::enable (bool  enabled  ) 
+
+
+ +

+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.

+

Parameters:
+ + +
enabled if true, the server will be enabled. If false it is disabled.
+
+ +
+

+ +

+
+ + + + + + + + + +
const char* cUPnPServer::getInterface (void   )  const [inline]
+
+
+ +

+Get the interface the server listens to

+

Returns:
the network interface
+ +
+

+ +

+
+ + + + + + + + + +
sockaddr_in * cUPnPServer::getServerAddress (void   ) 
+
+
+ +

+Get the server address

+Returns a server address structure including IP address and port

+

Returns:
The server socket address
+ +
+

+ +

+
+ + + + + + + + +
bool cUPnPServer::isAutoDetectionEnabled (  )  [inline]
+
+
+ +

+Is auto detection enabled or not

+Returns true or false if auto detection is enabled or not

+

Returns:
returns
    +
  • true, if autodetection is enabled
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::isEnabled (void   )  const [inline]
+
+
+ +

+Checks if the server is enabled

+This indicates if the server is currently enabled.

+

Returns:
returns
    +
  • true, if the server is enabled
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::isRunning (void   )  const [inline]
+
+
+ +

+Checks if the server is running

+If the server is enabled, this indicates if it is running.

+

Returns:
returns
    +
  • true if the server is running
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::restart (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.

+

Returns:
returns
    +
  • true, when the server restarted successfully
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::setAddress (const char *  Address  ) 
+
+
+ +

+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.

+

Parameters:
+ + +
Address The address of the server
+
+
Returns:
returns
    +
  • true, if the new server address is set
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::setAutoDetection (bool  enable  ) 
+
+
+ +

+Enables oder Disables auto detection mode

+If this is set to true, the setup will get it's information via auto detection

+

Parameters:
+ + +
enable true enables and false disables the auto detection
+
+
Returns:
returns
    +
  • true, if the new server address is set
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::setInterface (const char *  Interface  ) 
+
+
+ +

+The Interface to listen on

+Sets the listener interface, for instance 'eth1' or 'wlan0'

+

Parameters:
+ + +
Interface The interface of the server
+
+
Returns:
returns
    +
  • true, if the new server address is set
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::setServerPort (unsigned short  port  ) 
+
+
+ +

+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

+

Parameters:
+ + +
port The port of the server
+
+
Returns:
returns
    +
  • true, if the new server port is set
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPServer::start (void   ) 
+
+
+ +

+Start the UPnP server

+This will start the UPnP server activities as a background task.

+

Returns:
returns
    +
  • true, when the server started successfully
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + +
void cUPnPServer::stop (void   ) 
+
+
+ +

+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: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPServer__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPVideoBroadcastMediator Member List

This is the complete list of members for cUPnPVideoBroadcastMediator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPVideoBroadcastMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoBroadcastMediator(cMediaDatabase *MediaDatabase)cUPnPVideoBroadcastMediator
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPVideoBroadcastMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPVideoBroadcastMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPVideoBroadcastMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoBroadcastMediator() (defined in cUPnPVideoBroadcastMediator)cUPnPVideoBroadcastMediator [inline, virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPVideoBroadcastMediator Class Reference + + + + + +
+

cUPnPVideoBroadcastMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPVideoBroadcastMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPVideoBroadcastMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 cUPnPVideoBroadcastMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassVideoBroadcastcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassVideoBroadcastgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator (cMediaDatabase MediaDatabase  ) 
+
+
+ +

+Constructor of video broadcast mediator

+This creates a new video broadcast mediator with which it is possible to create new instances of VideoBroadcast objects.

+

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassVideoBroadcast * cUPnPVideoBroadcastMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPVideoBroadcastMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassVideoBroadcast * cUPnPVideoBroadcastMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPVideoBroadcastMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented from cUPnPVideoItemMediator.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png 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 @@ + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPVideoItemMediator Member List

This is the complete list of members for cUPnPVideoItemMediator, including all inherited members.

+ + + + + + + + + + + + + + + + + +
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPVideoItemMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPVideoItemMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPVideoItemMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPVideoItemMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPVideoItemMediator Class Reference + + + + + +
+

cUPnPVideoItemMediator Class Reference

#include <object.h> +

+

+Inheritance diagram for cUPnPVideoItemMediator:
+
+

Inheritance graph
+ + +
[legend]
+
+Collaboration diagram for cUPnPVideoItemMediator:
+
+

Collaboration graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 cUPnPVideoItemMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassVideoItemcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassVideoItemgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
+


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.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
cUPnPVideoItemMediator::cUPnPVideoItemMediator (cMediaDatabase MediaDatabase  ) 
+
+
+ +

+Constructor of videoitem mediator

+This creates a new videoitem mediator with which it is possible to create new instances of VideoItem objects.

+

Parameters:
+ + +
MediaDatabase the media database
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
cUPnPClassVideoItem * cUPnPVideoItemMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
+
+
+ +

+Creates an object

+This creates a new UPnP object with the specific title and the restriction.

+

Returns:
the newly created object
+
Parameters:
+ + + +
Title the title of that object
Restricted the restriction of the object
+
+ +

Reimplemented from cUPnPItemMediator.

+ +

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPVideoItemMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
+
+
+ +

+Loads an object from database

+This loads an object from the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + + +
Object the object to be loaded
ID the object ID of that object
+
+ +

Reimplemented from cUPnPItemMediator.

+ +

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + +
cUPnPClassVideoItem * cUPnPVideoItemMediator::getObject (cUPnPObjectID  ID  )  [virtual]
+
+
+ +

+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.

+

Returns:
the object, found in the database
+
Parameters:
+ + +
ID the object ID
+
+ +

Reimplemented from cUPnPItemMediator.

+ +

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+ +

+
+ + + + + + + + + +
int cUPnPVideoItemMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
+
+
+ +

+Store the object in the database

+This stores the information of an object in the database

+

Returns:
returns
    +
  • <0, in case of an error
  • 0, otherwise
+
+
Parameters:
+ + +
Object the object to be saved
+
+ +

Reimplemented from cUPnPItemMediator.

+ +

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + + + + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPVideoItemMediator__coll__graph.png 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 @@ + + + + + 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 Binary files /dev/null and b/doc/html/classcUPnPVideoItemMediator__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPWebServer Member List

This is the complete list of members for cUPnPWebServer, including all inherited members.

+ + + + + + + + + + + +
close(UpnpWebFileHandle fh)cUPnPWebServer [static]
cUPnPServer (defined in cUPnPWebServer)cUPnPWebServer [friend]
getInfo(const char *filename, struct File_Info *info)cUPnPWebServer [static]
getInstance(const char *rootdir="/")cUPnPWebServer [static]
init()cUPnPWebServer
open(const char *filename, UpnpOpenFileMode mode)cUPnPWebServer [static]
read(UpnpWebFileHandle fh, char *buf, size_t buflen)cUPnPWebServer [static]
seek(UpnpWebFileHandle fh, off_t offset, int origin)cUPnPWebServer [static]
uninit()cUPnPWebServer
write(UpnpWebFileHandle fh, char *buf, size_t buflen)cUPnPWebServer [static]
~cUPnPWebServer() (defined in cUPnPWebServer)cUPnPWebServer [virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPWebServer Class Reference + + + + + +
+

cUPnPWebServer Class Reference

#include <upnpwebserver.h> +

+

+Collaboration diagram for cUPnPWebServer:
+
+

Collaboration graph
+
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

bool init ()
bool uninit ()

Static Public Member Functions

static cUPnPWebServergetInstance (const char *rootdir="/")
static int getInfo (const char *filename, struct File_Info *info)
static UpnpWebFileHandle open (const char *filename, UpnpOpenFileMode mode)
static int read (UpnpWebFileHandle fh, char *buf, size_t buflen)
static int write (UpnpWebFileHandle fh, char *buf, size_t buflen)
static int seek (UpnpWebFileHandle fh, off_t offset, int origin)
static int close (UpnpWebFileHandle fh)

Friends

+class cUPnPServer
+


Detailed Description

+The internal webserver

+This is the internal webserver. It distributes all the contents of the UPnP-Server.


Member Function Documentation

+ +
+
+ + + + + + + + + +
int cUPnPWebServer::close (UpnpWebFileHandle  fh  )  [static]
+
+
+ +

+Closes the file

+closes the opened file

+Returns 0 on success, non-zero value otherwise

+

Returns:
0 on success, non-zero value otherwise
+
Parameters:
+ + +
fh the file handle of the opened file
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int cUPnPWebServer::getInfo (const char *  filename,
struct File_Info *  info 
) [static]
+
+
+ +

+Retrieve file information

+Returns file related information for an virtual directory file

+

Returns:
0 on success, -1 otherwise
+
Parameters:
+ + + +
filename The filename of which the information is gathered
info The File_Info structure with the data
+
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPWebServer * cUPnPWebServer::getInstance (const char *  rootdir = "/"  )  [static]
+
+
+ +

+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.

+

Returns:
the instance of webserver
+
Parameters:
+ + +
rootdir the root directory of the webserver
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPWebServer::init (void   ) 
+
+
+ +

+Initializes the webserver

+It enables the webserver which comes with the Intel SDK and creates virtual directories for shares media.

+

Returns:
returns
    +
  • true, if initializing was successful
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
UpnpWebFileHandle cUPnPWebServer::open (const char *  filename,
UpnpOpenFileMode  mode 
) [static]
+
+
+ +

+Opens a virtual directory file

+Opens a file in a virtual directory with the specified mode.

+Possible modes are:

    +
  • UPNP_READ, Opens the file for reading
  • UPNP_WRITE, Opens the file for writing
+

+It returns a file handle to the opened file, NULL otherwise

+

Returns:
FileHandle to the opened file, NULL otherwise
+
Parameters:
+ + + +
filename The file to open
mode UPNP_WRITE for writing, UPNP_READ for reading.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int cUPnPWebServer::read (UpnpWebFileHandle  fh,
char *  buf,
size_t  buflen 
) [static]
+
+
+ +

+Reads from the opened file

+Reads buflen bytes from the file and stores the content to the buffer

+Returns 0 no more bytes read (EOF) >0 bytes read from file

+

Returns:
number of bytes read, 0 on EOF
+
Parameters:
+ + + + +
fh the file handle of the opened file
buf the buffer to write the bytes to
buflen the maximum count of bytes to read
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int cUPnPWebServer::seek (UpnpWebFileHandle  fh,
off_t  offset,
int  origin 
) [static]
+
+
+ +

+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

+

Returns:
0 on success, non-zero value otherwise
+
Parameters:
+ + + + +
fh the file handle of the opened file
offset a negative oder positive value which moves the pointer forward or backward
origin SEEK_CUR, SEEK_END or SEEK_SET
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPWebServer::uninit (void   ) 
+
+
+ +

+Uninitializes the webserver

+This stops the webserver.

+

Returns:
returns
    +
  • true, if initializing was successful
  • false, otherwise
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int cUPnPWebServer::write (UpnpWebFileHandle  fh,
char *  buf,
size_t  buflen 
) [static]
+
+
+ +

+Writes to the opened file

+Writes 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

+

Returns:
number of bytes read, 0 on EOF
+
Parameters:
+ + + + +
fh the file handle of the opened file
buf the buffer to read the bytes from
buflen the maximum count of bytes to write
+
+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/classcUPnPWebServer__coll__graph.map b/doc/html/classcUPnPWebServer__coll__graph.map new file mode 100644 index 0000000..e69de29 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 Binary files /dev/null and b/doc/html/classcUPnPWebServer__coll__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUpnpService Member List

This is the complete list of members for cUpnpService, including all inherited members.

+ + + + + + + +
execute(Upnp_Action_Request *Request)=0cUpnpService [pure virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cUpnpService [protected, virtual]
subscribe(Upnp_Subscription_Request *Request)=0cUpnpService [pure virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUpnpService Class Reference + + + + + +
+

cUpnpService Class Reference

#include <upnpservice.h> +

+

+Inheritance diagram for cUpnpService:
+
+

Inheritance graph
+ + +
[legend]
+ +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual int subscribe (Upnp_Subscription_Request *Request)=0
virtual int execute (Upnp_Action_Request *Request)=0

Protected Member Functions

virtual void setError (Upnp_Action_Request *Request, int Error)
int parseIntegerValue (IN IXML_Document *Document, IN const char *Item, OUT int *Value)
int parseStringValue (IN IXML_Document *Document, IN const char *Item, OUT char **Value)

Protected Attributes

+UpnpDevice_Handle mDeviceHandle
 the UPnP device handle of the root device
+


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.


Member Function Documentation

+ +
+
+ + + + + + + + + +
virtual int cUpnpService::execute (Upnp_Action_Request *  Request  )  [pure virtual]
+
+
+ +

+Executes an action

+This executes an action initialized by a control point. The result is stored in the first parameter.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Input and output parameters of an action
+
+
Parameters:
+ + +
Request Input and output parameters of an action
+
+ +

Implemented in cConnectionManager, and cContentDirectory.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int cUpnpService::parseIntegerValue (IN IXML_Document *  Document,
IN const char *  Item,
OUT int *  Value 
) [protected]
+
+
+ +

+Parses an integer value

+This tool function parses an integer value from a given IXML document. It is searching for the very first occurance of the demanded item.

+

Returns:
Returns
    +
  • 0, if parsing was successful
  • <0, if an error occured
+
+
Parameters:
+ + + + +
Document the document, which is parsed
Item the demanded item
Value the value of the item
+
+
Parameters:
+ + + + +
Document the document, which is parsed
Item the demanded item
Value the value of the item
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int cUpnpService::parseStringValue (IN IXML_Document *  Document,
IN const char *  Item,
OUT char **  Value 
) [protected]
+
+
+ +

+Parses a string value

+This tool function parses a string value from a given IXML document. It is searching for the very first occurance of the demanded item.

+

Returns:
Returns
    +
  • 0, if parsing was successful
  • <0, if an error occured
+
+
Parameters:
+ + + + +
Document the document, which is parsed
Item the demanded item
Value the value of the item
+
+
Parameters:
+ + + + +
Document the document, which is parsed
Item the demanded item
Value the value of the item
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void cUpnpService::setError (Upnp_Action_Request *  Request,
int  Error 
) [protected, virtual]
+
+
+ +

+Sets an error on an action request

+This function puts a error message into the action request structure according to its error code

+

Parameters:
+ + + +
Request the action request, to set the error for
Error the error code of which the message should be obtained
+
+
Parameters:
+ + + +
Request the action request, to set the error for
Error the error code of which the message should be obtained
+
+ +

Reimplemented in cConnectionManager, and cContentDirectory.

+ +
+

+ +

+
+ + + + + + + + + +
virtual int cUpnpService::subscribe (Upnp_Subscription_Request *  Request  )  [pure virtual]
+
+
+ +

+Subscribes to an event

+This is a callback function to register a new subscriber for an event.

+

Returns:
An integer representing one of the following:
    +
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
+
+
Parameters:
+ + +
Request Information about the subscription
+
+
Parameters:
+ + +
Request Information about the subscription
+
+ +

Implemented in cConnectionManager, and cContentDirectory.

+ +
+

+


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + 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 Binary files /dev/null and b/doc/html/classcUpnpService__inherit__graph.png 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cVirtualConnection Member List

This is the complete list of members for cVirtualConnection, including all inherited members.

+ +
cConnectionManager (defined in cVirtualConnection)cVirtualConnection [friend]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cVirtualConnection Class Reference + + + + + +
+

cVirtualConnection Class Reference

#include <connectionmanager.h> +

+ +

+List of all members. + + + + +

Friends

+class cConnectionManager
+


Detailed Description

+Virtual connection

+A virtual connection managed by the connection manager service


The documentation for this class was generated from the following files: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Alphabetical List + + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: common.h Source File + + + + + +
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: misc/config.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: upnpcomponents/connectionmanager.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: upnpcomponents/contentdirectory.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: database/database.h Source File + + + + + +
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: upnpcomponents/dlna.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 Binary files /dev/null and b/doc/html/doxygen.png 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 @@ + + +UPnP/DLNA plugin for VDR: receiver/filehandle.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: File Index + + + + + +
+

File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + +
common.h [code]
upnp.h [code]
database/database.h [code]
database/metadata.h [code]
database/object.h [code]
database/resources.h [code]
misc/avdetector.h [code]
misc/config.h [code]
misc/menusetup.h [code]
misc/search.h [code]
misc/util.h [code]
receiver/filehandle.h [code]
receiver/livereceiver.h [code]
receiver/recplayer.h [code]
server/server.h [code]
upnpcomponents/connectionmanager.h [code]
upnpcomponents/contentdirectory.h [code]
upnpcomponents/dlna.h [code]
upnpcomponents/upnpservice.h [code]
upnpcomponents/upnpwebserver.h [code]
+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- _ -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- b -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- c -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- d -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- e -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- f -

    +
  • fetchColumn() +: cRow +
  • fetchRow() +: cRows +
+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- g -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- h -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- i -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- l -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- m -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- n -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- o -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- p -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- r -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- s -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- u -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- v -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- w -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members + + + + + +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

- ~ -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- a -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- b -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- c -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- d -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- e -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- f -

    +
  • fetchColumn() +: cRow +
  • fetchRow() +: cRows +
+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- g -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- i -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- l -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- m -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- n -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- o -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- p -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- r -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- s -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- u -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- v -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Functions + + + + + +
+  +

+

- ~ -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Class Members - Variables + + + + + +
+  +

+

- _ -

+

- b -

+

- h -

+

- i -

+

- m -

+

- p -

+

- s -

+

- w -

+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Graph Legend + + + + + +
+

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

+Consider the following example:

/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented,
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+
This will result in the following graph:

+

+graph_legend.png +
+

+The boxes in the above graph have the following meaning:

    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +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.
  • +
+The arrows have the following meaning:
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +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.
  • +
  • +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.
  • +
+
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png new file mode 100644 index 0000000..9c64830 Binary files /dev/null and b/doc/html/graph_legend.png 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 @@ + + +UPnP/DLNA plugin for VDR: Hierarchical Index + + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Main Page + + + + + +
+

UPnP/DLNA plugin for VDR Documentation

+

+

0.0.1

+
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__0.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__1.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__10.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__11.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__12.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__13.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__14.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__15.png 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 @@ + + + + + + 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 Binary files /dev/null and b/doc/html/inherit__graph__16.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__17.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__18.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__19.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__2.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__20.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__21.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__22.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__23.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__24.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__25.png 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 @@ + + + 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 Binary files /dev/null and b/doc/html/inherit__graph__26.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__27.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__28.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__29.png 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 @@ + + + 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 Binary files /dev/null and b/doc/html/inherit__graph__3.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__30.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__4.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__5.png 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 @@ + + + + + + + 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 Binary files /dev/null and b/doc/html/inherit__graph__6.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__7.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__8.png 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 @@ + 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 Binary files /dev/null and b/doc/html/inherit__graph__9.png 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 @@ + + +UPnP/DLNA plugin for VDR: Graphical Class Hierarchy + + + + + +
+

Graphical Class Hierarchy

Go to the textual class hierarchy +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cFileHandle Member List

This is the complete list of members for cFileHandle, including all inherited members.

+ + + + + + +
close()=0cFileHandle [pure virtual]
open(UpnpOpenFileMode mode)=0cFileHandle [pure virtual]
read(char *buf, size_t buflen)=0cFileHandle [pure virtual]
seek(off_t offset, int whence)=0cFileHandle [pure virtual]
write(char *buf, size_t buflen)=0cFileHandle [pure virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]

+
Generated on Fri Nov 6 22:22:12 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: receiver/livereceiver.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: misc/menusetup.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: database/metadata.h Source File + + + + + +
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: database/object.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: receiver/recplayer.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: database/resources.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: misc/search.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: server/server.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

DLNAIconProfile Member List

This is the complete list of members for DLNAIconProfile, including all inherited members.

+ + + + +
bitDepthDLNAIconProfile
heightDLNAIconProfile
mimeDLNAIconProfile
widthDLNAIconProfile

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: DLNAIconProfile Struct Reference + + + + + +
+

DLNAIconProfile Struct Reference

#include <common.h> +

+ +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

+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
+


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: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

DLNAProfile Member List

This is the complete list of members for DLNAProfile, including all inherited members.

+ + +
IDDLNAProfile
mimeDLNAProfile

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: DLNAProfile Struct Reference + + + + + +
+

DLNAProfile Struct Reference

#include <common.h> +

+ +

+List of all members. + + + + + + + + +

Public Attributes

+const char * ID
 the DLNA profile ID
+const char * mime
 the mime type of the resource
+


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: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cClass Member List

This is the complete list of members for cClass, including all inherited members.

+ + + + +
IDcClass
includeDerivedcClass
operator!=(const cClass &cmp)cClass [inline]
operator==(const cClass &cmp)cClass [inline]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cClass Struct Reference + + + + + +
+

cClass Struct Reference

#include <object.h> +

+ +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

bool operator== (const cClass &cmp)
bool operator!= (const cClass &cmp)

Public Attributes

+cString ID
 The upnp class ID.
+bool includeDerived
 flag, to indicate if derived classes are allowed
+


Detailed Description

+Structure of a UPnP Class

+This represents a UPnP Class


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool cClass::operator!= (const cClass cmp  )  [inline]
+
+
+ +

+Compares two classes

+

Parameters:
+ + +
cmp the other class to compare with
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cClass::operator== (const cClass cmp  )  [inline]
+
+
+ +

+Compares two classes

+

Parameters:
+ + +
cmp the other class to compare with
+
+ +
+

+


The documentation for this struct was generated from the following file: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cSortCrit Member List

This is the complete list of members for cSortCrit, including all inherited members.

+ + +
PropertycSortCrit
SortDescendingcSortCrit

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cSortCrit Struct Reference + + + + + +
+

cSortCrit Struct Reference

#include <search.h> +

+ +

+List of all members. + + + + + + + + +

Public Attributes

+const char * Property
 the Property, which shall be sorted
+bool SortDescending
 sort the objects in descending order
+


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: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPObjectID Member List

This is the complete list of members for cUPnPObjectID, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
_IDcUPnPObjectID
cUPnPObjectID()cUPnPObjectID [inline]
cUPnPObjectID(long ID)cUPnPObjectID [inline]
cUPnPObjectID(int ID)cUPnPObjectID [inline]
operator int()cUPnPObjectID [inline]
operator long()cUPnPObjectID [inline]
operator unsigned int()cUPnPObjectID [inline]
operator!=(long ID)cUPnPObjectID [inline]
operator!=(int ID)cUPnPObjectID [inline]
operator!=(const cUPnPObjectID &ID)cUPnPObjectID [inline]
operator*()cUPnPObjectID [inline]
operator++()cUPnPObjectID [inline]
operator++(int)cUPnPObjectID [inline]
operator--(int)cUPnPObjectID [inline]
operator--()cUPnPObjectID [inline]
operator=(long ID)cUPnPObjectID [inline]
operator=(int ID)cUPnPObjectID [inline]
operator=(const cUPnPObjectID &ID)cUPnPObjectID [inline]
operator==(long ID)cUPnPObjectID [inline]
operator==(int ID)cUPnPObjectID [inline]
operator==(const cUPnPObjectID &ID)cUPnPObjectID [inline]

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPObjectID Struct Reference + + + + + +
+

cUPnPObjectID Struct Reference

#include <object.h> +

+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 cUPnPObjectID ()
 cUPnPObjectID (long ID)
 cUPnPObjectID (int ID)
cUPnPObjectIDoperator= (long ID)
cUPnPObjectIDoperator= (int ID)
cUPnPObjectIDoperator= (const cUPnPObjectID &ID)
cUPnPObjectIDoperator++ ()
cUPnPObjectID operator++ (int)
cUPnPObjectID operator-- (int)
cUPnPObjectIDoperator-- ()
bool operator!= (long ID)
bool operator== (long ID)
bool operator!= (int ID)
bool operator== (int ID)
bool operator!= (const cUPnPObjectID &ID)
bool operator== (const cUPnPObjectID &ID)
 operator unsigned int ()
 operator int ()
 operator long ()
const char * operator* ()

Public Attributes

+int _ID
 The UPnP Object ID.
+


Detailed Description

+UPnP Object ID

+This is a UPnP Object ID representation.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
cUPnPObjectID::cUPnPObjectID (  )  [inline]
+
+
+ +

+Constructor

+Creates invalid ID +

+

+ +

+
+ + + + + + + + + +
cUPnPObjectID::cUPnPObjectID (long  ID  )  [inline]
+
+
+ +

+Constructor

+Creates from long integer

Parameters:
+ + +
ID new ID
+
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPObjectID::cUPnPObjectID (int  ID  )  [inline]
+
+
+ +

+Constructor

+Creates from integer

Parameters:
+ + +
ID new ID
+
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + +
cUPnPObjectID::operator int (  )  [inline]
+
+
+ +

+Casts to int +

+

+ +

+
+ + + + + + + + +
cUPnPObjectID::operator long (  )  [inline]
+
+
+ +

+Casts to long +

+

+ +

+
+ + + + + + + + +
cUPnPObjectID::operator unsigned int (  )  [inline]
+
+
+ +

+Casts to unsigned int +

+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator!= (const cUPnPObjectID ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator!= (int  ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator!= (long  ID  )  [inline]
+
+
+ +

+Not equal

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+ +

+
+ + + + + + + + +
const char* cUPnPObjectID::operator* (  )  [inline]
+
+
+ +

+Casts to string +

+

+ +

+
+ + + + + + + + + +
cUPnPObjectID cUPnPObjectID::operator++ (int   )  [inline]
+
+
+ +

+Post increment the ID +

+

+ +

+
+ + + + + + + + +
cUPnPObjectID& cUPnPObjectID::operator++ (  )  [inline]
+
+
+ +

+Pre increment the ID +

+

+ +

+
+ + + + + + + + +
cUPnPObjectID& cUPnPObjectID::operator-- (  )  [inline]
+
+
+ +

+Pre decrement the ID +

+

+ +

+
+ + + + + + + + + +
cUPnPObjectID cUPnPObjectID::operator-- (int   )  [inline]
+
+
+ +

+Post decrement the ID +

+

+ +

+
+ + + + + + + + + +
cUPnPObjectID& cUPnPObjectID::operator= (const cUPnPObjectID ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID new ID
+
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPObjectID& cUPnPObjectID::operator= (int  ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID new ID
+
+ +
+

+ +

+
+ + + + + + + + + +
cUPnPObjectID& cUPnPObjectID::operator= (long  ID  )  [inline]
+
+
+ +

+Set the object ID

Parameters:
+ + +
ID new ID
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator== (const cUPnPObjectID ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator== (int  ID  )  [inline]
+
+
+ +

+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+ +

+
+ + + + + + + + + +
bool cUPnPObjectID::operator== (long  ID  )  [inline]
+
+
+ +

+Equal

Parameters:
+ + +
ID compare with this ID
+
+ +
+

+


The documentation for this struct was generated from the following file: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: Member List + + + + + +
+

cUPnPResultSet Member List

This is the complete list of members for cUPnPResultSet, including all inherited members.

+ + + +
mNumberReturnedcUPnPResultSet
mResultcUPnPResultSet
mTotalMatchescUPnPResultSet

+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: cUPnPResultSet Struct Reference + + + + + +
+

cUPnPResultSet Struct Reference

#include <metadata.h> +

+ +

+List of all members. + + + + + + + + + + + +

Public Attributes

+int mNumberReturned
 The number of returned matches.
+int mTotalMatches
 The total amount of matches.
+const char * mResult
 The DIDL-Lite fragment.
+


Detailed Description

+The result set of a request

+This contains the results of a previous Browse or Search request.


The documentation for this struct was generated from the following file: +
+
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/doc/html/tab_b.gif differ diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/doc/html/tab_l.gif differ diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/doc/html/tab_r.gif 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 @@ + + +UPnP/DLNA plugin for VDR: upnp.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: upnpcomponents/upnpservice.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: upnpcomponents/upnpwebserver.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + 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 @@ + + +UPnP/DLNA plugin for VDR: misc/util.h Source File + + + + + +
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  + +doxygen 1.5.8
+ + diff --git a/doc/latex/FreeSans.ttf b/doc/latex/FreeSans.ttf new file mode 100644 index 0000000..b550b90 Binary files /dev/null and b/doc/latex/FreeSans.ttf 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 Binary files /dev/null and b/doc/latex/classcConnectionManager__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcConnectionManager__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcContentDirectory__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcContentDirectory__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcDlna__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcFileHandle.pdf 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 Binary files /dev/null and b/doc/latex/classcFileHandle__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcLiveReceiver.pdf 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 Binary files /dev/null and b/doc/latex/classcLiveReceiver__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcLiveReceiver__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcMediaDatabase__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcMediatorInterface__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcMenuSetupUPnP__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcPluginUpnp__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcRecordingPlayer__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcRecordingPlayer__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcRegisteredProfile__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcRows__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcSQLiteDatabase__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcSortCriteria__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassContainer__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassContainer__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassItem__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassItem__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassMovie__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassMovie__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassObject__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassObject__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPConfig__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPContainerMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPItemMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPItemMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPMovieMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPObjectFactory__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPObjectMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPResourceMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPResource__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPResources__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPServer__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUPnPWebServer__coll__graph.pdf 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 Binary files /dev/null and b/doc/latex/classcUpnpService__inherit__graph.pdf 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 , where is the value of +# the FILE_VERSION_FILTER tag, and 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 , where +# is the value of the INPUT_FILTER tag, and 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 +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +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 Binary files /dev/null and b/http/icons/upnpIconLrg.jpeg differ diff --git a/http/icons/upnpIconLrg.png b/http/icons/upnpIconLrg.png new file mode 100755 index 0000000..d93e7c0 Binary files /dev/null and b/http/icons/upnpIconLrg.png differ diff --git a/http/icons/upnpIconSm.jpeg b/http/icons/upnpIconSm.jpeg new file mode 100755 index 0000000..b163f05 Binary files /dev/null and b/http/icons/upnpIconSm.jpeg differ diff --git a/http/icons/upnpIconSm.png b/http/icons/upnpIconSm.png new file mode 100755 index 0000000..d4320f4 Binary files /dev/null and b/http/icons/upnpIconSm.png 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 @@ + + + +1 +0 + + + +GetSearchCapabilities + + +SearchCaps +out +SearchCapabilities + + + + +GetSortCapabilities + + +SortCaps +out +SortCapabilities + + + + +GetSystemUpdateID + + +Id +out +SystemUpdateID + + + + +Browse + + +ObjectID +in +A_ARG_TYPE_ObjectID + + +BrowseFlag +in +A_ARG_TYPE_BrowseFlag + + +Filter +in +A_ARG_TYPE_Filter + + +StartingIndex +in +A_ARG_TYPE_Index + + +RequestedCount +in +A_ARG_TYPE_Count + + +SortCriteria +in +A_ARG_TYPE_SortCriteria + + +Result +out +A_ARG_TYPE_Result + + +NumberReturned +out +A_ARG_TYPE_Count + + +TotalMatches +out +A_ARG_TYPE_Count + + +UpdateID +out +A_ARG_TYPE_UpdateID + + + + + + +A_ARG_TYPE_ObjectID +string + + +A_ARG_TYPE_Result +string + + +A_ARG_TYPE_BrowseFlag +string + +BrowseMetadata +BrowseDirectChildren + + + +A_ARG_TYPE_Filter +string + + +A_ARG_TYPE_SortCriteria +string + + +A_ARG_TYPE_Index +ui4 + + +A_ARG_TYPE_Count +ui4 + + +A_ARG_TYPE_UpdateID +ui4 + + +SearchCapabilities +string + + +SortCapabilities +string + + +SystemUpdateID +ui4 + + + + 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 @@ + + + + 1 + 0 + + + + GetProtocolInfo + + + Source + out + SourceProtocolInfo + + + Sink + out + SinkProtocolInfo + + + + + GetCurrentConnectionIDs + + + ConnectionIDs + out + CurrentConnectionIDs + + + + + GetCurrentConnectionInfo + + + ConnectionID + in + A_ARG_TYPE_ConnectionID + + + RcsID + out + A_ARG_TYPE_RcsID + + + AVTransportID + out + A_ARG_TYPE_AVTransportID + + + ProtocolInfo + out + A_ARG_TYPE_ProtocolInfo + + + PeerConnectionManager + out + A_ARG_TYPE_ConnectionManager + + + PeerConnectionID + out + A_ARG_TYPE_ConnectionID + + + Direction + out + A_ARG_TYPE_Direction + + + Status + out + A_ARG_TYPE_ConnectionStatus + + + + + + + SourceProtocolInfo + string + + + SinkProtocolInfo + string + + + CurrentConnectionIDs + string + + + A_ARG_TYPE_ConnectionStatus + string + + OK + ContentFormatMismatch + InsufficientBandwidth + UnreliableChannel + Unknown + + + + A_ARG_TYPE_ConnectionManager + string + + + A_ARG_TYPE_Direction + string + + Input + Output + + + + A_ARG_TYPE_ProtocolInfo + string + + + A_ARG_TYPE_ConnectionID + i4 + + + A_ARG_TYPE_AVTransportID + i4 + + + A_ARG_TYPE_RcsID + i4 + + + + 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 +#include + +extern "C" { +#include +#include +} + +/** + * 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 +#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 +#include +#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 { + 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 +#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 +#include +#include + +#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 +#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 +#include +#include +#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* 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 +#include +#include +#include +#include + +/** + * 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 { +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* mResources; ///< The resources of this object + cHash* 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* 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* 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 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* 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 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 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* 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* 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 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 +#include +} + +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 +extern "C" { +#include +#include +} +#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 { + /** + * true if VBR, false 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 multiplier + */ + 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 + +/** + * 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 +#include + +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* 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 +#include +#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 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* mCriteriaList; + bool parseSort(const char* Sort); + void pushProperty(const char* Property); + void pushDirection(const char Direction); + cList* 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* 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 +#include +#include +#include +#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 Connection Manager Service 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* 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 +#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 Content Directory Service 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 + +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 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 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 +#include +#include + +#ifdef __cplusplus +extern "C" { +#if 0 +} +#endif + +#include +#include +/** + * 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 + +/** + * 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 Intel SDK 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 buflen 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 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 + * + * @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 , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.0.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-24 20:48+0100\n" +"PO-Revision-Date: 2010-01-24 20:14+0100\n" +"Last-Translator: savop \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 --int= The server network\n" +" interface\n" +" e.g: eth0, wlan1 etc.\n" +" If given option '-a' must\n" +" be absent.\n" +" -a
--address=
The server IPv4 address.\n" +" If given option '-i' must\n" +" be absent.\n" +" -p --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= The directory in which the\n" +" metadata database is stored\n" +" --httpdir= 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 --int= Die Servernetzwerkkarte\n" +" z.B: eth0, wlan1 etc.\n" +" Wenn angegeben, darf '-a'\n" +" nicht angegeben werden.\n" +" -a
--address=
Die Server-IPv4-Adresse.\n" +" Wenn angegeben, darf '-i'\n" +" nicht angegeben werden.\n" +" -p --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= Das Verzeichnis, worin die\n" +" Metadatenbank abgelegt ist\n" +" --httpdir= 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 , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: vdr-upnp 0.0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-01-24 20:11+0100\n" +"PO-Revision-Date: 2009-12-30 22:17+0100\n" +"Last-Translator: Denis \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 --int= The server network\n" +" interface\n" +" e.g: eth0, wlan1 etc.\n" +" If given option '-a' must\n" +" be absent.\n" +" -a
--address=
The server IPv4 address.\n" +" If given option '-i' must\n" +" be absent.\n" +" -p --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= The directory in which the\n" +" metadata database is stored\n" +" --httpdir= 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 --int= Die Servernetzwerkkarte\n" +" z.B.: eth0, wlan1 etc.\n" +" Falls angegeben, muss '-a'\n" +" weggelassen werden.\n" +" -a
--address=
Die Server-IPv4-Adresse.\n" +" Falls angegeben, muss '-i'\n" +" weggelassen werden.\n" +" -p --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= Das Verzeichnis, worin die\n" +" Metadatenbank gespeichert ist\n" +" --httpdir= 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 +#include +#include +#include +#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 +#include +#include +#include +#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; + 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( + " \ + %s \ + \ + ", + 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( + " \ + %s \ + ", + 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( + "\ + %s\ + %s\ + %d\ + %s\ + %d\ + %d\ + %s\ + ", + 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 +#include +#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( + " \ + %s \ + %d \ + %d \ + %d \ + ", + 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( + " \ + %d \ + ", + 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( + " \ + %s \ + ", + 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( + " \ + %s \ + ", + 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 -- cgit v1.2.3 From 2f45223f577c91db7fd962020b3473f5a34f369c Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Mon, 25 Jan 2010 12:17:38 +0100 Subject: Removed documentation from repository --- doc/Source Code Documentation.zip | Bin 1617842 -> 0 bytes doc/doxygen.err | 0 doc/html/annotated.html | 78 - doc/html/avdetector_8h-source.html | 48 - doc/html/classcAudioVideoDetector-members.html | 34 - doc/html/classcAudioVideoDetector.html | 85 - doc/html/classcConnectionManager-members.html | 40 - doc/html/classcConnectionManager.html | 195 -- doc/html/classcConnectionManager__coll__graph.map | 2 - doc/html/classcConnectionManager__coll__graph.md5 | 1 - doc/html/classcConnectionManager__coll__graph.png | Bin 12806 -> 0 bytes .../classcConnectionManager__inherit__graph.map | 1 - .../classcConnectionManager__inherit__graph.md5 | 1 - .../classcConnectionManager__inherit__graph.png | Bin 7810 -> 0 bytes doc/html/classcContentDirectory-members.html | 40 - doc/html/classcContentDirectory.html | 205 -- doc/html/classcContentDirectory__coll__graph.map | 7 - doc/html/classcContentDirectory__coll__graph.md5 | 1 - doc/html/classcContentDirectory__coll__graph.png | Bin 42439 -> 0 bytes .../classcContentDirectory__inherit__graph.map | 1 - .../classcContentDirectory__inherit__graph.md5 | 1 - .../classcContentDirectory__inherit__graph.png | Bin 6233 -> 0 bytes doc/html/classcDlna-members.html | 42 - doc/html/classcDlna.html | 335 ---- doc/html/classcDlna__coll__graph.map | 0 doc/html/classcDlna__coll__graph.md5 | 1 - doc/html/classcDlna__coll__graph.png | Bin 5213 -> 0 bytes doc/html/classcFileHandle-members.html | 37 - doc/html/classcFileHandle.html | 273 --- doc/html/classcFileHandle.png | Bin 368 -> 0 bytes doc/html/classcFileHandle__inherit__graph.map | 2 - doc/html/classcFileHandle__inherit__graph.md5 | 1 - doc/html/classcFileHandle__inherit__graph.png | Bin 9721 -> 0 bytes doc/html/classcFilterCriteria-members.html | 33 - doc/html/classcFilterCriteria.html | 73 - doc/html/classcLiveReceiver-members.html | 42 - doc/html/classcLiveReceiver.html | 388 ---- doc/html/classcLiveReceiver.png | Bin 364 -> 0 bytes doc/html/classcLiveReceiver__coll__graph.map | 1 - doc/html/classcLiveReceiver__coll__graph.md5 | 1 - doc/html/classcLiveReceiver__coll__graph.png | Bin 5464 -> 0 bytes doc/html/classcLiveReceiver__inherit__graph.map | 1 - doc/html/classcLiveReceiver__inherit__graph.md5 | 1 - doc/html/classcLiveReceiver__inherit__graph.png | Bin 5464 -> 0 bytes doc/html/classcMediaDatabase-members.html | 42 - doc/html/classcMediaDatabase.html | 390 ---- doc/html/classcMediaDatabase__coll__graph.map | 5 - doc/html/classcMediaDatabase__coll__graph.md5 | 1 - doc/html/classcMediaDatabase__coll__graph.png | Bin 33669 -> 0 bytes doc/html/classcMediatorInterface-members.html | 37 - doc/html/classcMediatorInterface.html | 226 --- .../classcMediatorInterface__inherit__graph.map | 6 - .../classcMediatorInterface__inherit__graph.md5 | 1 - .../classcMediatorInterface__inherit__graph.png | Bin 19327 -> 0 bytes doc/html/classcMenuSetupUPnP-members.html | 36 - doc/html/classcMenuSetupUPnP.html | 151 -- doc/html/classcMenuSetupUPnP__coll__graph.map | 12 - doc/html/classcMenuSetupUPnP__coll__graph.md5 | 1 - doc/html/classcMenuSetupUPnP__coll__graph.png | Bin 83074 -> 0 bytes doc/html/classcPathParser-members.html | 33 - doc/html/classcPathParser.html | 100 - doc/html/classcPluginUpnp-members.html | 44 - doc/html/classcPluginUpnp.html | 361 ---- doc/html/classcPluginUpnp__coll__graph.map | 12 - doc/html/classcPluginUpnp__coll__graph.md5 | 1 - doc/html/classcPluginUpnp__coll__graph.png | Bin 82300 -> 0 bytes doc/html/classcRecordingPlayer-members.html | 39 - doc/html/classcRecordingPlayer.html | 284 --- doc/html/classcRecordingPlayer__coll__graph.map | 1 - doc/html/classcRecordingPlayer__coll__graph.md5 | 1 - doc/html/classcRecordingPlayer__coll__graph.png | Bin 5532 -> 0 bytes doc/html/classcRecordingPlayer__inherit__graph.map | 1 - doc/html/classcRecordingPlayer__inherit__graph.md5 | 1 - doc/html/classcRecordingPlayer__inherit__graph.png | Bin 5532 -> 0 bytes doc/html/classcRegisteredProfile-members.html | 34 - doc/html/classcRegisteredProfile.html | 52 - doc/html/classcRegisteredProfile__coll__graph.map | 1 - doc/html/classcRegisteredProfile__coll__graph.md5 | 1 - doc/html/classcRegisteredProfile__coll__graph.png | Bin 3045 -> 0 bytes doc/html/classcRow-members.html | 36 - doc/html/classcRow.html | 156 -- doc/html/classcRows-members.html | 34 - doc/html/classcRows.html | 88 - doc/html/classcRows__coll__graph.map | 1 - doc/html/classcRows__coll__graph.md5 | 1 - doc/html/classcRows__coll__graph.png | Bin 3061 -> 0 bytes doc/html/classcSQLiteDatabase-members.html | 43 - doc/html/classcSQLiteDatabase.html | 343 ---- doc/html/classcSQLiteDatabase__coll__graph.map | 2 - doc/html/classcSQLiteDatabase__coll__graph.md5 | 1 - doc/html/classcSQLiteDatabase__coll__graph.png | Bin 10351 -> 0 bytes doc/html/classcSortCriteria-members.html | 33 - doc/html/classcSortCriteria.html | 82 - doc/html/classcSortCriteria__coll__graph.map | 1 - doc/html/classcSortCriteria__coll__graph.md5 | 1 - doc/html/classcSortCriteria__coll__graph.png | Bin 3734 -> 0 bytes doc/html/classcUPnPClassContainer-members.html | 110 -- doc/html/classcUPnPClassContainer.html | 897 --------- doc/html/classcUPnPClassContainer__coll__graph.map | 3 - doc/html/classcUPnPClassContainer__coll__graph.md5 | 1 - doc/html/classcUPnPClassContainer__coll__graph.png | Bin 28651 -> 0 bytes .../classcUPnPClassContainer__inherit__graph.map | 1 - .../classcUPnPClassContainer__inherit__graph.md5 | 1 - .../classcUPnPClassContainer__inherit__graph.png | Bin 19210 -> 0 bytes doc/html/classcUPnPClassItem-members.html | 86 - doc/html/classcUPnPClassItem.html | 337 ---- doc/html/classcUPnPClassItem__coll__graph.map | 2 - doc/html/classcUPnPClassItem__coll__graph.md5 | 1 - doc/html/classcUPnPClassItem__coll__graph.png | Bin 19548 -> 0 bytes doc/html/classcUPnPClassItem__inherit__graph.map | 4 - doc/html/classcUPnPClassItem__inherit__graph.md5 | 1 - doc/html/classcUPnPClassItem__inherit__graph.png | Bin 35614 -> 0 bytes doc/html/classcUPnPClassMovie-members.html | 126 -- doc/html/classcUPnPClassMovie.html | 331 ---- doc/html/classcUPnPClassMovie__coll__graph.map | 4 - doc/html/classcUPnPClassMovie__coll__graph.md5 | 1 - doc/html/classcUPnPClassMovie__coll__graph.png | Bin 32902 -> 0 bytes doc/html/classcUPnPClassMovie__inherit__graph.map | 3 - doc/html/classcUPnPClassMovie__inherit__graph.md5 | 1 - doc/html/classcUPnPClassMovie__inherit__graph.png | Bin 25190 -> 0 bytes doc/html/classcUPnPClassObject-members.html | 80 - doc/html/classcUPnPClassObject.html | 1039 ----------- doc/html/classcUPnPClassObject__coll__graph.map | 1 - doc/html/classcUPnPClassObject__coll__graph.md5 | 1 - doc/html/classcUPnPClassObject__coll__graph.png | Bin 14875 -> 0 bytes doc/html/classcUPnPClassObject__inherit__graph.map | 5 - doc/html/classcUPnPClassObject__inherit__graph.md5 | 1 - doc/html/classcUPnPClassObject__inherit__graph.png | Bin 48263 -> 0 bytes .../classcUPnPClassVideoBroadcast-members.html | 132 -- doc/html/classcUPnPClassVideoBroadcast.html | 446 ----- .../classcUPnPClassVideoBroadcast__coll__graph.map | 4 - .../classcUPnPClassVideoBroadcast__coll__graph.md5 | 1 - .../classcUPnPClassVideoBroadcast__coll__graph.png | Bin 34677 -> 0 bytes ...asscUPnPClassVideoBroadcast__inherit__graph.map | 3 - ...asscUPnPClassVideoBroadcast__inherit__graph.md5 | 1 - ...asscUPnPClassVideoBroadcast__inherit__graph.png | Bin 27404 -> 0 bytes doc/html/classcUPnPClassVideoItem-members.html | 118 -- doc/html/classcUPnPClassVideoItem.html | 815 -------- doc/html/classcUPnPClassVideoItem__coll__graph.map | 3 - doc/html/classcUPnPClassVideoItem__coll__graph.md5 | 1 - doc/html/classcUPnPClassVideoItem__coll__graph.png | Bin 29140 -> 0 bytes .../classcUPnPClassVideoItem__inherit__graph.map | 4 - .../classcUPnPClassVideoItem__inherit__graph.md5 | 1 - .../classcUPnPClassVideoItem__inherit__graph.png | Bin 35964 -> 0 bytes doc/html/classcUPnPConfig-members.html | 40 - doc/html/classcUPnPConfig.html | 178 -- doc/html/classcUPnPConfig__coll__graph.map | 0 doc/html/classcUPnPConfig__coll__graph.md5 | 1 - doc/html/classcUPnPConfig__coll__graph.png | Bin 3507 -> 0 bytes doc/html/classcUPnPContainerMediator-members.html | 46 - doc/html/classcUPnPContainerMediator.html | 240 --- .../classcUPnPContainerMediator__coll__graph.map | 8 - .../classcUPnPContainerMediator__coll__graph.md5 | 1 - .../classcUPnPContainerMediator__coll__graph.png | Bin 50722 -> 0 bytes ...classcUPnPContainerMediator__inherit__graph.map | 2 - ...classcUPnPContainerMediator__inherit__graph.md5 | 1 - ...classcUPnPContainerMediator__inherit__graph.png | Bin 7593 -> 0 bytes doc/html/classcUPnPItemMediator-members.html | 46 - doc/html/classcUPnPItemMediator.html | 248 --- doc/html/classcUPnPItemMediator__coll__graph.map | 8 - doc/html/classcUPnPItemMediator__coll__graph.md5 | 1 - doc/html/classcUPnPItemMediator__coll__graph.png | Bin 50741 -> 0 bytes .../classcUPnPItemMediator__inherit__graph.map | 5 - .../classcUPnPItemMediator__inherit__graph.md5 | 1 - .../classcUPnPItemMediator__inherit__graph.png | Bin 16957 -> 0 bytes doc/html/classcUPnPMovieMediator-members.html | 50 - doc/html/classcUPnPMovieMediator.html | 240 --- doc/html/classcUPnPMovieMediator__coll__graph.map | 10 - doc/html/classcUPnPMovieMediator__coll__graph.md5 | 1 - doc/html/classcUPnPMovieMediator__coll__graph.png | Bin 58255 -> 0 bytes .../classcUPnPMovieMediator__inherit__graph.map | 4 - .../classcUPnPMovieMediator__inherit__graph.md5 | 1 - .../classcUPnPMovieMediator__inherit__graph.png | Bin 11924 -> 0 bytes doc/html/classcUPnPObjectFactory-members.html | 39 - doc/html/classcUPnPObjectFactory.html | 332 ---- doc/html/classcUPnPObjectFactory__coll__graph.map | 3 - doc/html/classcUPnPObjectFactory__coll__graph.md5 | 1 - doc/html/classcUPnPObjectFactory__coll__graph.png | Bin 15735 -> 0 bytes doc/html/classcUPnPObjectMediator-members.html | 44 - doc/html/classcUPnPObjectMediator.html | 410 ---- doc/html/classcUPnPObjectMediator__coll__graph.map | 7 - doc/html/classcUPnPObjectMediator__coll__graph.md5 | 1 - doc/html/classcUPnPObjectMediator__coll__graph.png | Bin 47043 -> 0 bytes .../classcUPnPObjectMediator__inherit__graph.map | 6 - .../classcUPnPObjectMediator__inherit__graph.md5 | 1 - .../classcUPnPObjectMediator__inherit__graph.png | Bin 19333 -> 0 bytes doc/html/classcUPnPObjects-members.html | 34 - doc/html/classcUPnPObjects.html | 81 - doc/html/classcUPnPResource-members.html | 50 - doc/html/classcUPnPResource.html | 444 ----- doc/html/classcUPnPResourceMediator-members.html | 36 - doc/html/classcUPnPResourceMediator.html | 177 -- .../classcUPnPResourceMediator__coll__graph.map | 3 - .../classcUPnPResourceMediator__coll__graph.md5 | 1 - .../classcUPnPResourceMediator__coll__graph.png | Bin 13837 -> 0 bytes doc/html/classcUPnPResource__coll__graph.map | 1 - doc/html/classcUPnPResource__coll__graph.md5 | 1 - doc/html/classcUPnPResource__coll__graph.png | Bin 10453 -> 0 bytes doc/html/classcUPnPResources-members.html | 39 - doc/html/classcUPnPResources.html | 289 --- doc/html/classcUPnPResources__coll__graph.map | 4 - doc/html/classcUPnPResources__coll__graph.md5 | 1 - doc/html/classcUPnPResources__coll__graph.png | Bin 19388 -> 0 bytes doc/html/classcUPnPServer-members.html | 48 - doc/html/classcUPnPServer.html | 493 ----- doc/html/classcUPnPServer__coll__graph.map | 11 - doc/html/classcUPnPServer__coll__graph.md5 | 1 - doc/html/classcUPnPServer__coll__graph.png | Bin 74574 -> 0 bytes .../classcUPnPVideoBroadcastMediator-members.html | 50 - doc/html/classcUPnPVideoBroadcastMediator.html | 240 --- ...asscUPnPVideoBroadcastMediator__coll__graph.map | 10 - ...asscUPnPVideoBroadcastMediator__coll__graph.md5 | 1 - ...asscUPnPVideoBroadcastMediator__coll__graph.png | Bin 58682 -> 0 bytes ...cUPnPVideoBroadcastMediator__inherit__graph.map | 4 - ...cUPnPVideoBroadcastMediator__inherit__graph.md5 | 1 - ...cUPnPVideoBroadcastMediator__inherit__graph.png | Bin 12710 -> 0 bytes doc/html/classcUPnPVideoItemMediator-members.html | 48 - doc/html/classcUPnPVideoItemMediator.html | 248 --- .../classcUPnPVideoItemMediator__coll__graph.map | 9 - .../classcUPnPVideoItemMediator__coll__graph.md5 | 1 - .../classcUPnPVideoItemMediator__coll__graph.png | Bin 54556 -> 0 bytes ...classcUPnPVideoItemMediator__inherit__graph.map | 5 - ...classcUPnPVideoItemMediator__inherit__graph.md5 | 1 - ...classcUPnPVideoItemMediator__inherit__graph.png | Bin 16876 -> 0 bytes doc/html/classcUPnPWebServer-members.html | 42 - doc/html/classcUPnPWebServer.html | 396 ---- doc/html/classcUPnPWebServer__coll__graph.map | 0 doc/html/classcUPnPWebServer__coll__graph.md5 | 1 - doc/html/classcUPnPWebServer__coll__graph.png | Bin 3893 -> 0 bytes doc/html/classcUpnpService-members.html | 38 - doc/html/classcUpnpService.html | 294 --- doc/html/classcUpnpService__inherit__graph.map | 2 - doc/html/classcUpnpService__inherit__graph.md5 | 1 - doc/html/classcUpnpService__inherit__graph.png | Bin 11369 -> 0 bytes doc/html/classcVirtualConnection-members.html | 32 - doc/html/classcVirtualConnection.html | 45 - doc/html/classes.html | 35 - doc/html/common_8h-source.html | 766 -------- doc/html/config_8h-source.html | 59 - doc/html/connectionmanager_8h-source.html | 95 - doc/html/contentdirectory_8h-source.html | 67 - doc/html/database_8h-source.html | 898 --------- doc/html/dlna_8h-source.html | 95 - doc/html/doxygen.css | 441 ----- doc/html/doxygen.png | Bin 1281 -> 0 bytes doc/html/filehandle_8h-source.html | 68 - doc/html/files.html | 50 - doc/html/functions.html | 68 - doc/html/functions_0x61.html | 84 - doc/html/functions_0x62.html | 70 - doc/html/functions_0x63.html | 136 -- doc/html/functions_0x64.html | 85 - doc/html/functions_0x65.html | 74 - doc/html/functions_0x66.html | 70 - doc/html/functions_0x67.html | 234 --- doc/html/functions_0x68.html | 68 - doc/html/functions_0x69.html | 91 - doc/html/functions_0x6c.html | 70 - doc/html/functions_0x6d.html | 167 -- doc/html/functions_0x6e.html | 71 - doc/html/functions_0x6f.html | 100 - doc/html/functions_0x70.html | 84 - doc/html/functions_0x72.html | 87 - doc/html/functions_0x73.html | 190 -- doc/html/functions_0x75.html | 74 - doc/html/functions_0x76.html | 68 - doc/html/functions_0x77.html | 73 - doc/html/functions_0x7e.html | 68 - doc/html/functions_func.html | 82 - doc/html/functions_func_0x62.html | 66 - doc/html/functions_func_0x63.html | 134 -- doc/html/functions_func_0x64.html | 83 - doc/html/functions_func_0x65.html | 72 - doc/html/functions_func_0x66.html | 68 - doc/html/functions_func_0x67.html | 232 --- doc/html/functions_func_0x69.html | 84 - doc/html/functions_func_0x6c.html | 68 - doc/html/functions_func_0x6d.html | 66 - doc/html/functions_func_0x6e.html | 69 - doc/html/functions_func_0x6f.html | 98 - doc/html/functions_func_0x70.html | 80 - doc/html/functions_func_0x72.html | 85 - doc/html/functions_func_0x73.html | 186 -- doc/html/functions_func_0x75.html | 72 - doc/html/functions_func_0x76.html | 66 - doc/html/functions_func_0x77.html | 69 - doc/html/functions_func_0x7e.html | 66 - doc/html/functions_vars.html | 183 -- doc/html/graph_legend.dot | 22 - doc/html/graph_legend.html | 85 - doc/html/graph_legend.png | Bin 4341 -> 0 bytes doc/html/hierarchy.html | 98 - doc/html/index.html | 25 - doc/html/inherit__graph__0.map | 1 - doc/html/inherit__graph__0.md5 | 1 - doc/html/inherit__graph__0.png | Bin 595 -> 0 bytes doc/html/inherit__graph__1.map | 1 - doc/html/inherit__graph__1.md5 | 1 - doc/html/inherit__graph__1.png | Bin 332 -> 0 bytes doc/html/inherit__graph__10.map | 1 - doc/html/inherit__graph__10.md5 | 1 - doc/html/inherit__graph__10.png | Bin 557 -> 0 bytes doc/html/inherit__graph__11.map | 1 - doc/html/inherit__graph__11.md5 | 1 - doc/html/inherit__graph__11.png | Bin 299 -> 0 bytes doc/html/inherit__graph__12.map | 1 - doc/html/inherit__graph__12.md5 | 1 - doc/html/inherit__graph__12.png | Bin 325 -> 0 bytes doc/html/inherit__graph__13.map | 1 - doc/html/inherit__graph__13.md5 | 1 - doc/html/inherit__graph__13.png | Bin 383 -> 0 bytes doc/html/inherit__graph__14.map | 1 - doc/html/inherit__graph__14.md5 | 1 - doc/html/inherit__graph__14.png | Bin 456 -> 0 bytes doc/html/inherit__graph__15.map | 1 - doc/html/inherit__graph__15.md5 | 1 - doc/html/inherit__graph__15.png | Bin 552 -> 0 bytes doc/html/inherit__graph__16.map | 6 - doc/html/inherit__graph__16.md5 | 1 - doc/html/inherit__graph__16.png | Bin 2327 -> 0 bytes doc/html/inherit__graph__17.map | 1 - doc/html/inherit__graph__17.md5 | 1 - doc/html/inherit__graph__17.png | Bin 442 -> 0 bytes doc/html/inherit__graph__18.map | 1 - doc/html/inherit__graph__18.md5 | 1 - doc/html/inherit__graph__18.png | Bin 593 -> 0 bytes doc/html/inherit__graph__19.map | 1 - doc/html/inherit__graph__19.md5 | 1 - doc/html/inherit__graph__19.png | Bin 485 -> 0 bytes doc/html/inherit__graph__2.map | 1 - doc/html/inherit__graph__2.md5 | 1 - doc/html/inherit__graph__2.png | Bin 305 -> 0 bytes doc/html/inherit__graph__20.map | 1 - doc/html/inherit__graph__20.md5 | 1 - doc/html/inherit__graph__20.png | Bin 474 -> 0 bytes doc/html/inherit__graph__21.map | 1 - doc/html/inherit__graph__21.md5 | 1 - doc/html/inherit__graph__21.png | Bin 449 -> 0 bytes doc/html/inherit__graph__22.map | 1 - doc/html/inherit__graph__22.md5 | 1 - doc/html/inherit__graph__22.png | Bin 623 -> 0 bytes doc/html/inherit__graph__23.map | 1 - doc/html/inherit__graph__23.md5 | 1 - doc/html/inherit__graph__23.png | Bin 465 -> 0 bytes doc/html/inherit__graph__24.map | 1 - doc/html/inherit__graph__24.md5 | 1 - doc/html/inherit__graph__24.png | Bin 489 -> 0 bytes doc/html/inherit__graph__25.map | 1 - doc/html/inherit__graph__25.md5 | 1 - doc/html/inherit__graph__25.png | Bin 433 -> 0 bytes doc/html/inherit__graph__26.map | 3 - doc/html/inherit__graph__26.md5 | 1 - doc/html/inherit__graph__26.png | Bin 1401 -> 0 bytes doc/html/inherit__graph__27.map | 1 - doc/html/inherit__graph__27.md5 | 1 - doc/html/inherit__graph__27.png | Bin 515 -> 0 bytes doc/html/inherit__graph__28.map | 1 - doc/html/inherit__graph__28.md5 | 1 - doc/html/inherit__graph__28.png | Bin 533 -> 0 bytes doc/html/inherit__graph__29.map | 1 - doc/html/inherit__graph__29.md5 | 1 - doc/html/inherit__graph__29.png | Bin 491 -> 0 bytes doc/html/inherit__graph__3.map | 3 - doc/html/inherit__graph__3.md5 | 1 - doc/html/inherit__graph__3.png | Bin 1237 -> 0 bytes doc/html/inherit__graph__30.map | 1 - doc/html/inherit__graph__30.md5 | 1 - doc/html/inherit__graph__30.png | Bin 423 -> 0 bytes doc/html/inherit__graph__4.map | 1 - doc/html/inherit__graph__4.md5 | 1 - doc/html/inherit__graph__4.png | Bin 465 -> 0 bytes doc/html/inherit__graph__5.map | 1 - doc/html/inherit__graph__5.md5 | 1 - doc/html/inherit__graph__5.png | Bin 535 -> 0 bytes doc/html/inherit__graph__6.map | 7 - doc/html/inherit__graph__6.md5 | 1 - doc/html/inherit__graph__6.png | Bin 3048 -> 0 bytes doc/html/inherit__graph__7.map | 1 - doc/html/inherit__graph__7.md5 | 1 - doc/html/inherit__graph__7.png | Bin 522 -> 0 bytes doc/html/inherit__graph__8.map | 1 - doc/html/inherit__graph__8.md5 | 1 - doc/html/inherit__graph__8.png | Bin 409 -> 0 bytes doc/html/inherit__graph__9.map | 1 - doc/html/inherit__graph__9.md5 | 1 - doc/html/inherit__graph__9.png | Bin 427 -> 0 bytes doc/html/inherits.html | 127 -- doc/html/interfacecFileHandle-members.html | 37 - doc/html/livereceiver_8h-source.html | 78 - doc/html/menusetup_8h-source.html | 70 - doc/html/metadata_8h-source.html | 108 -- doc/html/object_8h-source.html | 498 ----- doc/html/recplayer_8h-source.html | 65 - doc/html/resources_8h-source.html | 77 - doc/html/search_8h-source.html | 125 -- doc/html/server_8h-source.html | 85 - doc/html/structDLNAIconProfile-members.html | 35 - doc/html/structDLNAIconProfile.html | 58 - doc/html/structDLNAProfile-members.html | 33 - doc/html/structDLNAProfile.html | 50 - doc/html/structcClass-members.html | 35 - doc/html/structcClass.html | 108 -- doc/html/structcSortCrit-members.html | 33 - doc/html/structcSortCrit.html | 50 - doc/html/structcUPnPObjectID-members.html | 52 - doc/html/structcUPnPObjectID.html | 540 ------ doc/html/structcUPnPResultSet-members.html | 34 - doc/html/structcUPnPResultSet.html | 54 - doc/html/tab_b.gif | Bin 35 -> 0 bytes doc/html/tab_l.gif | Bin 706 -> 0 bytes doc/html/tab_r.gif | Bin 2585 -> 0 bytes doc/html/tabs.css | 105 -- doc/html/upnp_8h-source.html | 69 - doc/html/upnpservice_8h-source.html | 71 - doc/html/upnpwebserver_8h-source.html | 72 - doc/html/util_8h-source.html | 79 - doc/latex/FreeSans.ttf | Bin 22932 -> 0 bytes doc/latex/Makefile | 19 - doc/latex/annotated.tex | 49 - doc/latex/classcAudioVideoDetector.tex | 45 - doc/latex/classcConnectionManager.tex | 124 -- doc/latex/classcConnectionManager__coll__graph.eps | 470 ----- doc/latex/classcConnectionManager__coll__graph.md5 | 1 - doc/latex/classcConnectionManager__coll__graph.pdf | Bin 33189 -> 0 bytes .../classcConnectionManager__inherit__graph.eps | 358 ---- .../classcConnectionManager__inherit__graph.md5 | 1 - .../classcConnectionManager__inherit__graph.pdf | Bin 32469 -> 0 bytes doc/latex/classcContentDirectory.tex | 124 -- doc/latex/classcContentDirectory__coll__graph.eps | 1213 ------------ doc/latex/classcContentDirectory__coll__graph.md5 | 1 - doc/latex/classcContentDirectory__coll__graph.pdf | Bin 37215 -> 0 bytes .../classcContentDirectory__inherit__graph.eps | 340 ---- .../classcContentDirectory__inherit__graph.md5 | 1 - .../classcContentDirectory__inherit__graph.pdf | Bin 32397 -> 0 bytes doc/latex/classcDlna.tex | 202 -- doc/latex/classcDlna__coll__graph.eps | 312 ---- doc/latex/classcDlna__coll__graph.md5 | 1 - doc/latex/classcDlna__coll__graph.pdf | Bin 32004 -> 0 bytes doc/latex/classcFileHandle.eps | 197 -- doc/latex/classcFileHandle.pdf | Bin 2824 -> 0 bytes doc/latex/classcFileHandle.tex | 168 -- doc/latex/classcFileHandle__inherit__graph.eps | 462 ----- doc/latex/classcFileHandle__inherit__graph.md5 | 1 - doc/latex/classcFileHandle__inherit__graph.pdf | Bin 33310 -> 0 bytes doc/latex/classcFilterCriteria.tex | 43 - doc/latex/classcLiveReceiver.eps | 197 -- doc/latex/classcLiveReceiver.pdf | Bin 2824 -> 0 bytes doc/latex/classcLiveReceiver.tex | 229 --- doc/latex/classcLiveReceiver__coll__graph.eps | 355 ---- doc/latex/classcLiveReceiver__coll__graph.md5 | 1 - doc/latex/classcLiveReceiver__coll__graph.pdf | Bin 32430 -> 0 bytes doc/latex/classcLiveReceiver__inherit__graph.eps | 355 ---- doc/latex/classcLiveReceiver__inherit__graph.md5 | 1 - doc/latex/classcLiveReceiver__inherit__graph.pdf | Bin 32430 -> 0 bytes doc/latex/classcMediaDatabase.tex | 205 -- doc/latex/classcMediaDatabase__coll__graph.eps | 1029 ----------- doc/latex/classcMediaDatabase__coll__graph.md5 | 1 - doc/latex/classcMediaDatabase__coll__graph.pdf | Bin 35796 -> 0 bytes doc/latex/classcMediatorInterface.tex | 145 -- .../classcMediatorInterface__inherit__graph.eps | 710 ------- .../classcMediatorInterface__inherit__graph.md5 | 1 - .../classcMediatorInterface__inherit__graph.pdf | Bin 33580 -> 0 bytes doc/latex/classcMenuSetupUPnP.tex | 88 - doc/latex/classcMenuSetupUPnP__coll__graph.eps | 1954 -------------------- doc/latex/classcMenuSetupUPnP__coll__graph.md5 | 1 - doc/latex/classcMenuSetupUPnP__coll__graph.pdf | Bin 40545 -> 0 bytes doc/latex/classcPathParser.tex | 47 - doc/latex/classcPluginUpnp.tex | 212 --- doc/latex/classcPluginUpnp__coll__graph.eps | 1942 ------------------- doc/latex/classcPluginUpnp__coll__graph.md5 | 1 - doc/latex/classcPluginUpnp__coll__graph.pdf | Bin 40377 -> 0 bytes doc/latex/classcRecordingPlayer.tex | 175 -- doc/latex/classcRecordingPlayer__coll__graph.eps | 358 ---- doc/latex/classcRecordingPlayer__coll__graph.md5 | 1 - doc/latex/classcRecordingPlayer__coll__graph.pdf | Bin 32387 -> 0 bytes .../classcRecordingPlayer__inherit__graph.eps | 358 ---- .../classcRecordingPlayer__inherit__graph.md5 | 1 - .../classcRecordingPlayer__inherit__graph.pdf | Bin 32387 -> 0 bytes doc/latex/classcRegisteredProfile.tex | 31 - doc/latex/classcRegisteredProfile__coll__graph.eps | 333 ---- doc/latex/classcRegisteredProfile__coll__graph.md5 | 1 - doc/latex/classcRegisteredProfile__coll__graph.pdf | Bin 32163 -> 0 bytes doc/latex/classcRow.tex | 92 - doc/latex/classcRows.tex | 64 - doc/latex/classcRows__coll__graph.eps | 342 ---- doc/latex/classcRows__coll__graph.md5 | 1 - doc/latex/classcRows__coll__graph.pdf | Bin 31427 -> 0 bytes doc/latex/classcSQLiteDatabase.tex | 224 --- doc/latex/classcSQLiteDatabase__coll__graph.eps | 558 ------ doc/latex/classcSQLiteDatabase__coll__graph.md5 | 1 - doc/latex/classcSQLiteDatabase__coll__graph.pdf | Bin 33163 -> 0 bytes doc/latex/classcSortCriteria.tex | 52 - doc/latex/classcSortCriteria__coll__graph.eps | 339 ---- doc/latex/classcSortCriteria__coll__graph.md5 | 1 - doc/latex/classcSortCriteria__coll__graph.pdf | Bin 31796 -> 0 bytes doc/latex/classcUPnPClassContainer.tex | 603 ------ .../classcUPnPClassContainer__coll__graph.eps | 793 -------- .../classcUPnPClassContainer__coll__graph.md5 | 1 - .../classcUPnPClassContainer__coll__graph.pdf | Bin 34699 -> 0 bytes .../classcUPnPClassContainer__inherit__graph.eps | 532 ------ .../classcUPnPClassContainer__inherit__graph.md5 | 1 - .../classcUPnPClassContainer__inherit__graph.pdf | Bin 33227 -> 0 bytes doc/latex/classcUPnPClassItem.tex | 223 --- doc/latex/classcUPnPClassItem__coll__graph.eps | 670 ------- doc/latex/classcUPnPClassItem__coll__graph.md5 | 1 - doc/latex/classcUPnPClassItem__coll__graph.pdf | Bin 33817 -> 0 bytes doc/latex/classcUPnPClassItem__inherit__graph.eps | 805 -------- doc/latex/classcUPnPClassItem__inherit__graph.md5 | 1 - doc/latex/classcUPnPClassItem__inherit__graph.pdf | Bin 34865 -> 0 bytes doc/latex/classcUPnPClassMovie.tex | 234 --- doc/latex/classcUPnPClassMovie__coll__graph.eps | 914 --------- doc/latex/classcUPnPClassMovie__coll__graph.md5 | 1 - doc/latex/classcUPnPClassMovie__coll__graph.pdf | Bin 35221 -> 0 bytes doc/latex/classcUPnPClassMovie__inherit__graph.eps | 701 ------- doc/latex/classcUPnPClassMovie__inherit__graph.md5 | 1 - doc/latex/classcUPnPClassMovie__inherit__graph.pdf | Bin 34250 -> 0 bytes doc/latex/classcUPnPClassObject.tex | 703 ------- doc/latex/classcUPnPClassObject__coll__graph.eps | 550 ------ doc/latex/classcUPnPClassObject__coll__graph.md5 | 1 - doc/latex/classcUPnPClassObject__coll__graph.pdf | Bin 33364 -> 0 bytes .../classcUPnPClassObject__inherit__graph.eps | 963 ---------- .../classcUPnPClassObject__inherit__graph.md5 | 1 - .../classcUPnPClassObject__inherit__graph.pdf | Bin 35496 -> 0 bytes doc/latex/classcUPnPClassVideoBroadcast.tex | 308 --- .../classcUPnPClassVideoBroadcast__coll__graph.eps | 932 ---------- .../classcUPnPClassVideoBroadcast__coll__graph.md5 | 1 - .../classcUPnPClassVideoBroadcast__coll__graph.pdf | Bin 35399 -> 0 bytes ...asscUPnPClassVideoBroadcast__inherit__graph.eps | 719 ------- ...asscUPnPClassVideoBroadcast__inherit__graph.md5 | 1 - ...asscUPnPClassVideoBroadcast__inherit__graph.pdf | Bin 34400 -> 0 bytes doc/latex/classcUPnPClassVideoItem.tex | 572 ------ .../classcUPnPClassVideoItem__coll__graph.eps | 828 --------- .../classcUPnPClassVideoItem__coll__graph.md5 | 1 - .../classcUPnPClassVideoItem__coll__graph.pdf | Bin 34841 -> 0 bytes .../classcUPnPClassVideoItem__inherit__graph.eps | 805 -------- .../classcUPnPClassVideoItem__inherit__graph.md5 | 1 - .../classcUPnPClassVideoItem__inherit__graph.pdf | Bin 34843 -> 0 bytes doc/latex/classcUPnPConfig.tex | 120 -- doc/latex/classcUPnPConfig__coll__graph.eps | 303 --- doc/latex/classcUPnPConfig__coll__graph.md5 | 1 - doc/latex/classcUPnPConfig__coll__graph.pdf | Bin 31728 -> 0 bytes doc/latex/classcUPnPContainerMediator.tex | 153 -- .../classcUPnPContainerMediator__coll__graph.eps | 1323 ------------- .../classcUPnPContainerMediator__coll__graph.md5 | 1 - .../classcUPnPContainerMediator__coll__graph.pdf | Bin 37485 -> 0 bytes ...classcUPnPContainerMediator__inherit__graph.eps | 414 ----- ...classcUPnPContainerMediator__inherit__graph.md5 | 1 - ...classcUPnPContainerMediator__inherit__graph.pdf | Bin 32290 -> 0 bytes doc/latex/classcUPnPItemMediator.tex | 161 -- doc/latex/classcUPnPItemMediator__coll__graph.eps | 1323 ------------- doc/latex/classcUPnPItemMediator__coll__graph.md5 | 1 - doc/latex/classcUPnPItemMediator__coll__graph.pdf | Bin 37488 -> 0 bytes .../classcUPnPItemMediator__inherit__graph.eps | 636 ------- .../classcUPnPItemMediator__inherit__graph.md5 | 1 - .../classcUPnPItemMediator__inherit__graph.pdf | Bin 33180 -> 0 bytes doc/latex/classcUPnPMovieMediator.tex | 153 -- doc/latex/classcUPnPMovieMediator__coll__graph.eps | 1471 --------------- doc/latex/classcUPnPMovieMediator__coll__graph.md5 | 1 - doc/latex/classcUPnPMovieMediator__coll__graph.pdf | Bin 38031 -> 0 bytes .../classcUPnPMovieMediator__inherit__graph.eps | 562 ------ .../classcUPnPMovieMediator__inherit__graph.md5 | 1 - .../classcUPnPMovieMediator__inherit__graph.pdf | Bin 32756 -> 0 bytes doc/latex/classcUPnPObjectFactory.tex | 199 -- doc/latex/classcUPnPObjectFactory__coll__graph.eps | 710 ------- doc/latex/classcUPnPObjectFactory__coll__graph.md5 | 1 - doc/latex/classcUPnPObjectFactory__coll__graph.pdf | Bin 34247 -> 0 bytes doc/latex/classcUPnPObjectMediator.tex | 262 --- .../classcUPnPObjectMediator__coll__graph.eps | 1249 ------------- .../classcUPnPObjectMediator__coll__graph.md5 | 1 - .../classcUPnPObjectMediator__coll__graph.pdf | Bin 37137 -> 0 bytes .../classcUPnPObjectMediator__inherit__graph.eps | 710 ------- .../classcUPnPObjectMediator__inherit__graph.md5 | 1 - .../classcUPnPObjectMediator__inherit__graph.pdf | Bin 33584 -> 0 bytes doc/latex/classcUPnPObjects.tex | 39 - doc/latex/classcUPnPResource.tex | 288 --- doc/latex/classcUPnPResourceMediator.tex | 100 - .../classcUPnPResourceMediator__coll__graph.eps | 652 ------- .../classcUPnPResourceMediator__coll__graph.md5 | 1 - .../classcUPnPResourceMediator__coll__graph.pdf | Bin 33795 -> 0 bytes doc/latex/classcUPnPResource__coll__graph.eps | 462 ----- doc/latex/classcUPnPResource__coll__graph.md5 | 1 - doc/latex/classcUPnPResource__coll__graph.pdf | Bin 33162 -> 0 bytes doc/latex/classcUPnPResources.tex | 173 -- doc/latex/classcUPnPResources__coll__graph.eps | 838 --------- doc/latex/classcUPnPResources__coll__graph.md5 | 1 - doc/latex/classcUPnPResources__coll__graph.pdf | Bin 34585 -> 0 bytes doc/latex/classcUPnPServer.tex | 318 ---- doc/latex/classcUPnPServer__coll__graph.eps | 1824 ------------------ doc/latex/classcUPnPServer__coll__graph.md5 | 1 - doc/latex/classcUPnPServer__coll__graph.pdf | Bin 39896 -> 0 bytes doc/latex/classcUPnPVideoBroadcastMediator.tex | 153 -- ...asscUPnPVideoBroadcastMediator__coll__graph.eps | 1471 --------------- ...asscUPnPVideoBroadcastMediator__coll__graph.md5 | 1 - ...asscUPnPVideoBroadcastMediator__coll__graph.pdf | Bin 38043 -> 0 bytes ...cUPnPVideoBroadcastMediator__inherit__graph.eps | 562 ------ ...cUPnPVideoBroadcastMediator__inherit__graph.md5 | 1 - ...cUPnPVideoBroadcastMediator__inherit__graph.pdf | Bin 32861 -> 0 bytes doc/latex/classcUPnPVideoItemMediator.tex | 161 -- .../classcUPnPVideoItemMediator__coll__graph.eps | 1397 -------------- .../classcUPnPVideoItemMediator__coll__graph.md5 | 1 - .../classcUPnPVideoItemMediator__coll__graph.pdf | Bin 37806 -> 0 bytes ...classcUPnPVideoItemMediator__inherit__graph.eps | 636 ------- ...classcUPnPVideoItemMediator__inherit__graph.md5 | 1 - ...classcUPnPVideoItemMediator__inherit__graph.pdf | Bin 33164 -> 0 bytes doc/latex/classcUPnPWebServer.tex | 229 --- doc/latex/classcUPnPWebServer__coll__graph.eps | 309 ---- doc/latex/classcUPnPWebServer__coll__graph.md5 | 1 - doc/latex/classcUPnPWebServer__coll__graph.pdf | Bin 32032 -> 0 bytes doc/latex/classcUpnpService.tex | 180 -- doc/latex/classcUpnpService__inherit__graph.eps | 444 ----- doc/latex/classcUpnpService__inherit__graph.md5 | 1 - doc/latex/classcUpnpService__inherit__graph.pdf | Bin 33025 -> 0 bytes doc/latex/classcVirtualConnection.tex | 25 - doc/latex/doxygen.sty | 86 - doc/latex/hierarchy.tex | 67 - doc/latex/refman.tex | 101 - doc/latex/structDLNAIconProfile.tex | 39 - doc/latex/structDLNAProfile.tex | 29 - doc/latex/structcClass.tex | 67 - doc/latex/structcSortCrit.tex | 29 - doc/latex/structcUPnPObjectID.tex | 274 --- doc/latex/structcUPnPResultSet.tex | 34 - doc/upnpdlna.dox | 1510 --------------- 623 files changed, 72653 deletions(-) delete mode 100644 doc/Source Code Documentation.zip delete mode 100644 doc/doxygen.err delete mode 100644 doc/html/annotated.html delete mode 100644 doc/html/avdetector_8h-source.html delete mode 100644 doc/html/classcAudioVideoDetector-members.html delete mode 100644 doc/html/classcAudioVideoDetector.html delete mode 100644 doc/html/classcConnectionManager-members.html delete mode 100644 doc/html/classcConnectionManager.html delete mode 100644 doc/html/classcConnectionManager__coll__graph.map delete mode 100644 doc/html/classcConnectionManager__coll__graph.md5 delete mode 100644 doc/html/classcConnectionManager__coll__graph.png delete mode 100644 doc/html/classcConnectionManager__inherit__graph.map delete mode 100644 doc/html/classcConnectionManager__inherit__graph.md5 delete mode 100644 doc/html/classcConnectionManager__inherit__graph.png delete mode 100644 doc/html/classcContentDirectory-members.html delete mode 100644 doc/html/classcContentDirectory.html delete mode 100644 doc/html/classcContentDirectory__coll__graph.map delete mode 100644 doc/html/classcContentDirectory__coll__graph.md5 delete mode 100644 doc/html/classcContentDirectory__coll__graph.png delete mode 100644 doc/html/classcContentDirectory__inherit__graph.map delete mode 100644 doc/html/classcContentDirectory__inherit__graph.md5 delete mode 100644 doc/html/classcContentDirectory__inherit__graph.png delete mode 100644 doc/html/classcDlna-members.html delete mode 100644 doc/html/classcDlna.html delete mode 100644 doc/html/classcDlna__coll__graph.map delete mode 100644 doc/html/classcDlna__coll__graph.md5 delete mode 100644 doc/html/classcDlna__coll__graph.png delete mode 100644 doc/html/classcFileHandle-members.html delete mode 100644 doc/html/classcFileHandle.html delete mode 100644 doc/html/classcFileHandle.png delete mode 100644 doc/html/classcFileHandle__inherit__graph.map delete mode 100644 doc/html/classcFileHandle__inherit__graph.md5 delete mode 100644 doc/html/classcFileHandle__inherit__graph.png delete mode 100644 doc/html/classcFilterCriteria-members.html delete mode 100644 doc/html/classcFilterCriteria.html delete mode 100644 doc/html/classcLiveReceiver-members.html delete mode 100644 doc/html/classcLiveReceiver.html delete mode 100644 doc/html/classcLiveReceiver.png delete mode 100644 doc/html/classcLiveReceiver__coll__graph.map delete mode 100644 doc/html/classcLiveReceiver__coll__graph.md5 delete mode 100644 doc/html/classcLiveReceiver__coll__graph.png delete mode 100644 doc/html/classcLiveReceiver__inherit__graph.map delete mode 100644 doc/html/classcLiveReceiver__inherit__graph.md5 delete mode 100644 doc/html/classcLiveReceiver__inherit__graph.png delete mode 100644 doc/html/classcMediaDatabase-members.html delete mode 100644 doc/html/classcMediaDatabase.html delete mode 100644 doc/html/classcMediaDatabase__coll__graph.map delete mode 100644 doc/html/classcMediaDatabase__coll__graph.md5 delete mode 100644 doc/html/classcMediaDatabase__coll__graph.png delete mode 100644 doc/html/classcMediatorInterface-members.html delete mode 100644 doc/html/classcMediatorInterface.html delete mode 100644 doc/html/classcMediatorInterface__inherit__graph.map delete mode 100644 doc/html/classcMediatorInterface__inherit__graph.md5 delete mode 100644 doc/html/classcMediatorInterface__inherit__graph.png delete mode 100644 doc/html/classcMenuSetupUPnP-members.html delete mode 100644 doc/html/classcMenuSetupUPnP.html delete mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.map delete mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.md5 delete mode 100644 doc/html/classcMenuSetupUPnP__coll__graph.png delete mode 100644 doc/html/classcPathParser-members.html delete mode 100644 doc/html/classcPathParser.html delete mode 100644 doc/html/classcPluginUpnp-members.html delete mode 100644 doc/html/classcPluginUpnp.html delete mode 100644 doc/html/classcPluginUpnp__coll__graph.map delete mode 100644 doc/html/classcPluginUpnp__coll__graph.md5 delete mode 100644 doc/html/classcPluginUpnp__coll__graph.png delete mode 100644 doc/html/classcRecordingPlayer-members.html delete mode 100644 doc/html/classcRecordingPlayer.html delete mode 100644 doc/html/classcRecordingPlayer__coll__graph.map delete mode 100644 doc/html/classcRecordingPlayer__coll__graph.md5 delete mode 100644 doc/html/classcRecordingPlayer__coll__graph.png delete mode 100644 doc/html/classcRecordingPlayer__inherit__graph.map delete mode 100644 doc/html/classcRecordingPlayer__inherit__graph.md5 delete mode 100644 doc/html/classcRecordingPlayer__inherit__graph.png delete mode 100644 doc/html/classcRegisteredProfile-members.html delete mode 100644 doc/html/classcRegisteredProfile.html delete mode 100644 doc/html/classcRegisteredProfile__coll__graph.map delete mode 100644 doc/html/classcRegisteredProfile__coll__graph.md5 delete mode 100644 doc/html/classcRegisteredProfile__coll__graph.png delete mode 100644 doc/html/classcRow-members.html delete mode 100644 doc/html/classcRow.html delete mode 100644 doc/html/classcRows-members.html delete mode 100644 doc/html/classcRows.html delete mode 100644 doc/html/classcRows__coll__graph.map delete mode 100644 doc/html/classcRows__coll__graph.md5 delete mode 100644 doc/html/classcRows__coll__graph.png delete mode 100644 doc/html/classcSQLiteDatabase-members.html delete mode 100644 doc/html/classcSQLiteDatabase.html delete mode 100644 doc/html/classcSQLiteDatabase__coll__graph.map delete mode 100644 doc/html/classcSQLiteDatabase__coll__graph.md5 delete mode 100644 doc/html/classcSQLiteDatabase__coll__graph.png delete mode 100644 doc/html/classcSortCriteria-members.html delete mode 100644 doc/html/classcSortCriteria.html delete mode 100644 doc/html/classcSortCriteria__coll__graph.map delete mode 100644 doc/html/classcSortCriteria__coll__graph.md5 delete mode 100644 doc/html/classcSortCriteria__coll__graph.png delete mode 100644 doc/html/classcUPnPClassContainer-members.html delete mode 100644 doc/html/classcUPnPClassContainer.html delete mode 100644 doc/html/classcUPnPClassContainer__coll__graph.map delete mode 100644 doc/html/classcUPnPClassContainer__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassContainer__coll__graph.png delete mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassContainer__inherit__graph.png delete mode 100644 doc/html/classcUPnPClassItem-members.html delete mode 100644 doc/html/classcUPnPClassItem.html delete mode 100644 doc/html/classcUPnPClassItem__coll__graph.map delete mode 100644 doc/html/classcUPnPClassItem__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassItem__coll__graph.png delete mode 100644 doc/html/classcUPnPClassItem__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassItem__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassItem__inherit__graph.png delete mode 100644 doc/html/classcUPnPClassMovie-members.html delete mode 100644 doc/html/classcUPnPClassMovie.html delete mode 100644 doc/html/classcUPnPClassMovie__coll__graph.map delete mode 100644 doc/html/classcUPnPClassMovie__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassMovie__coll__graph.png delete mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassMovie__inherit__graph.png delete mode 100644 doc/html/classcUPnPClassObject-members.html delete mode 100644 doc/html/classcUPnPClassObject.html delete mode 100644 doc/html/classcUPnPClassObject__coll__graph.map delete mode 100644 doc/html/classcUPnPClassObject__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassObject__coll__graph.png delete mode 100644 doc/html/classcUPnPClassObject__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassObject__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassObject__inherit__graph.png delete mode 100644 doc/html/classcUPnPClassVideoBroadcast-members.html delete mode 100644 doc/html/classcUPnPClassVideoBroadcast.html delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.map delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__coll__graph.png delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png delete mode 100644 doc/html/classcUPnPClassVideoItem-members.html delete mode 100644 doc/html/classcUPnPClassVideoItem.html delete mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.map delete mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.md5 delete mode 100644 doc/html/classcUPnPClassVideoItem__coll__graph.png delete mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.map delete mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPClassVideoItem__inherit__graph.png delete mode 100644 doc/html/classcUPnPConfig-members.html delete mode 100644 doc/html/classcUPnPConfig.html delete mode 100644 doc/html/classcUPnPConfig__coll__graph.map delete mode 100644 doc/html/classcUPnPConfig__coll__graph.md5 delete mode 100644 doc/html/classcUPnPConfig__coll__graph.png delete mode 100644 doc/html/classcUPnPContainerMediator-members.html delete mode 100644 doc/html/classcUPnPContainerMediator.html delete mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPContainerMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPContainerMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPItemMediator-members.html delete mode 100644 doc/html/classcUPnPItemMediator.html delete mode 100644 doc/html/classcUPnPItemMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPItemMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPItemMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPItemMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPMovieMediator-members.html delete mode 100644 doc/html/classcUPnPMovieMediator.html delete mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPMovieMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPMovieMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPObjectFactory-members.html delete mode 100644 doc/html/classcUPnPObjectFactory.html delete mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.map delete mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.md5 delete mode 100644 doc/html/classcUPnPObjectFactory__coll__graph.png delete mode 100644 doc/html/classcUPnPObjectMediator-members.html delete mode 100644 doc/html/classcUPnPObjectMediator.html delete mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPObjectMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPObjectMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPObjects-members.html delete mode 100644 doc/html/classcUPnPObjects.html delete mode 100644 doc/html/classcUPnPResource-members.html delete mode 100644 doc/html/classcUPnPResource.html delete mode 100644 doc/html/classcUPnPResourceMediator-members.html delete mode 100644 doc/html/classcUPnPResourceMediator.html delete mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPResourceMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPResource__coll__graph.map delete mode 100644 doc/html/classcUPnPResource__coll__graph.md5 delete mode 100644 doc/html/classcUPnPResource__coll__graph.png delete mode 100644 doc/html/classcUPnPResources-members.html delete mode 100644 doc/html/classcUPnPResources.html delete mode 100644 doc/html/classcUPnPResources__coll__graph.map delete mode 100644 doc/html/classcUPnPResources__coll__graph.md5 delete mode 100644 doc/html/classcUPnPResources__coll__graph.png delete mode 100644 doc/html/classcUPnPServer-members.html delete mode 100644 doc/html/classcUPnPServer.html delete mode 100644 doc/html/classcUPnPServer__coll__graph.map delete mode 100644 doc/html/classcUPnPServer__coll__graph.md5 delete mode 100644 doc/html/classcUPnPServer__coll__graph.png delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator-members.html delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator.html delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPVideoItemMediator-members.html delete mode 100644 doc/html/classcUPnPVideoItemMediator.html delete mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.map delete mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.md5 delete mode 100644 doc/html/classcUPnPVideoItemMediator__coll__graph.png delete mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.map delete mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 delete mode 100644 doc/html/classcUPnPVideoItemMediator__inherit__graph.png delete mode 100644 doc/html/classcUPnPWebServer-members.html delete mode 100644 doc/html/classcUPnPWebServer.html delete mode 100644 doc/html/classcUPnPWebServer__coll__graph.map delete mode 100644 doc/html/classcUPnPWebServer__coll__graph.md5 delete mode 100644 doc/html/classcUPnPWebServer__coll__graph.png delete mode 100644 doc/html/classcUpnpService-members.html delete mode 100644 doc/html/classcUpnpService.html delete mode 100644 doc/html/classcUpnpService__inherit__graph.map delete mode 100644 doc/html/classcUpnpService__inherit__graph.md5 delete mode 100644 doc/html/classcUpnpService__inherit__graph.png delete mode 100644 doc/html/classcVirtualConnection-members.html delete mode 100644 doc/html/classcVirtualConnection.html delete mode 100644 doc/html/classes.html delete mode 100644 doc/html/common_8h-source.html delete mode 100644 doc/html/config_8h-source.html delete mode 100644 doc/html/connectionmanager_8h-source.html delete mode 100644 doc/html/contentdirectory_8h-source.html delete mode 100644 doc/html/database_8h-source.html delete mode 100644 doc/html/dlna_8h-source.html delete mode 100644 doc/html/doxygen.css delete mode 100644 doc/html/doxygen.png delete mode 100644 doc/html/filehandle_8h-source.html delete mode 100644 doc/html/files.html delete mode 100644 doc/html/functions.html delete mode 100644 doc/html/functions_0x61.html delete mode 100644 doc/html/functions_0x62.html delete mode 100644 doc/html/functions_0x63.html delete mode 100644 doc/html/functions_0x64.html delete mode 100644 doc/html/functions_0x65.html delete mode 100644 doc/html/functions_0x66.html delete mode 100644 doc/html/functions_0x67.html delete mode 100644 doc/html/functions_0x68.html delete mode 100644 doc/html/functions_0x69.html delete mode 100644 doc/html/functions_0x6c.html delete mode 100644 doc/html/functions_0x6d.html delete mode 100644 doc/html/functions_0x6e.html delete mode 100644 doc/html/functions_0x6f.html delete mode 100644 doc/html/functions_0x70.html delete mode 100644 doc/html/functions_0x72.html delete mode 100644 doc/html/functions_0x73.html delete mode 100644 doc/html/functions_0x75.html delete mode 100644 doc/html/functions_0x76.html delete mode 100644 doc/html/functions_0x77.html delete mode 100644 doc/html/functions_0x7e.html delete mode 100644 doc/html/functions_func.html delete mode 100644 doc/html/functions_func_0x62.html delete mode 100644 doc/html/functions_func_0x63.html delete mode 100644 doc/html/functions_func_0x64.html delete mode 100644 doc/html/functions_func_0x65.html delete mode 100644 doc/html/functions_func_0x66.html delete mode 100644 doc/html/functions_func_0x67.html delete mode 100644 doc/html/functions_func_0x69.html delete mode 100644 doc/html/functions_func_0x6c.html delete mode 100644 doc/html/functions_func_0x6d.html delete mode 100644 doc/html/functions_func_0x6e.html delete mode 100644 doc/html/functions_func_0x6f.html delete mode 100644 doc/html/functions_func_0x70.html delete mode 100644 doc/html/functions_func_0x72.html delete mode 100644 doc/html/functions_func_0x73.html delete mode 100644 doc/html/functions_func_0x75.html delete mode 100644 doc/html/functions_func_0x76.html delete mode 100644 doc/html/functions_func_0x77.html delete mode 100644 doc/html/functions_func_0x7e.html delete mode 100644 doc/html/functions_vars.html delete mode 100644 doc/html/graph_legend.dot delete mode 100644 doc/html/graph_legend.html delete mode 100644 doc/html/graph_legend.png delete mode 100644 doc/html/hierarchy.html delete mode 100644 doc/html/index.html delete mode 100644 doc/html/inherit__graph__0.map delete mode 100644 doc/html/inherit__graph__0.md5 delete mode 100644 doc/html/inherit__graph__0.png delete mode 100644 doc/html/inherit__graph__1.map delete mode 100644 doc/html/inherit__graph__1.md5 delete mode 100644 doc/html/inherit__graph__1.png delete mode 100644 doc/html/inherit__graph__10.map delete mode 100644 doc/html/inherit__graph__10.md5 delete mode 100644 doc/html/inherit__graph__10.png delete mode 100644 doc/html/inherit__graph__11.map delete mode 100644 doc/html/inherit__graph__11.md5 delete mode 100644 doc/html/inherit__graph__11.png delete mode 100644 doc/html/inherit__graph__12.map delete mode 100644 doc/html/inherit__graph__12.md5 delete mode 100644 doc/html/inherit__graph__12.png delete mode 100644 doc/html/inherit__graph__13.map delete mode 100644 doc/html/inherit__graph__13.md5 delete mode 100644 doc/html/inherit__graph__13.png delete mode 100644 doc/html/inherit__graph__14.map delete mode 100644 doc/html/inherit__graph__14.md5 delete mode 100644 doc/html/inherit__graph__14.png delete mode 100644 doc/html/inherit__graph__15.map delete mode 100644 doc/html/inherit__graph__15.md5 delete mode 100644 doc/html/inherit__graph__15.png delete mode 100644 doc/html/inherit__graph__16.map delete mode 100644 doc/html/inherit__graph__16.md5 delete mode 100644 doc/html/inherit__graph__16.png delete mode 100644 doc/html/inherit__graph__17.map delete mode 100644 doc/html/inherit__graph__17.md5 delete mode 100644 doc/html/inherit__graph__17.png delete mode 100644 doc/html/inherit__graph__18.map delete mode 100644 doc/html/inherit__graph__18.md5 delete mode 100644 doc/html/inherit__graph__18.png delete mode 100644 doc/html/inherit__graph__19.map delete mode 100644 doc/html/inherit__graph__19.md5 delete mode 100644 doc/html/inherit__graph__19.png delete mode 100644 doc/html/inherit__graph__2.map delete mode 100644 doc/html/inherit__graph__2.md5 delete mode 100644 doc/html/inherit__graph__2.png delete mode 100644 doc/html/inherit__graph__20.map delete mode 100644 doc/html/inherit__graph__20.md5 delete mode 100644 doc/html/inherit__graph__20.png delete mode 100644 doc/html/inherit__graph__21.map delete mode 100644 doc/html/inherit__graph__21.md5 delete mode 100644 doc/html/inherit__graph__21.png delete mode 100644 doc/html/inherit__graph__22.map delete mode 100644 doc/html/inherit__graph__22.md5 delete mode 100644 doc/html/inherit__graph__22.png delete mode 100644 doc/html/inherit__graph__23.map delete mode 100644 doc/html/inherit__graph__23.md5 delete mode 100644 doc/html/inherit__graph__23.png delete mode 100644 doc/html/inherit__graph__24.map delete mode 100644 doc/html/inherit__graph__24.md5 delete mode 100644 doc/html/inherit__graph__24.png delete mode 100644 doc/html/inherit__graph__25.map delete mode 100644 doc/html/inherit__graph__25.md5 delete mode 100644 doc/html/inherit__graph__25.png delete mode 100644 doc/html/inherit__graph__26.map delete mode 100644 doc/html/inherit__graph__26.md5 delete mode 100644 doc/html/inherit__graph__26.png delete mode 100644 doc/html/inherit__graph__27.map delete mode 100644 doc/html/inherit__graph__27.md5 delete mode 100644 doc/html/inherit__graph__27.png delete mode 100644 doc/html/inherit__graph__28.map delete mode 100644 doc/html/inherit__graph__28.md5 delete mode 100644 doc/html/inherit__graph__28.png delete mode 100644 doc/html/inherit__graph__29.map delete mode 100644 doc/html/inherit__graph__29.md5 delete mode 100644 doc/html/inherit__graph__29.png delete mode 100644 doc/html/inherit__graph__3.map delete mode 100644 doc/html/inherit__graph__3.md5 delete mode 100644 doc/html/inherit__graph__3.png delete mode 100644 doc/html/inherit__graph__30.map delete mode 100644 doc/html/inherit__graph__30.md5 delete mode 100644 doc/html/inherit__graph__30.png delete mode 100644 doc/html/inherit__graph__4.map delete mode 100644 doc/html/inherit__graph__4.md5 delete mode 100644 doc/html/inherit__graph__4.png delete mode 100644 doc/html/inherit__graph__5.map delete mode 100644 doc/html/inherit__graph__5.md5 delete mode 100644 doc/html/inherit__graph__5.png delete mode 100644 doc/html/inherit__graph__6.map delete mode 100644 doc/html/inherit__graph__6.md5 delete mode 100644 doc/html/inherit__graph__6.png delete mode 100644 doc/html/inherit__graph__7.map delete mode 100644 doc/html/inherit__graph__7.md5 delete mode 100644 doc/html/inherit__graph__7.png delete mode 100644 doc/html/inherit__graph__8.map delete mode 100644 doc/html/inherit__graph__8.md5 delete mode 100644 doc/html/inherit__graph__8.png delete mode 100644 doc/html/inherit__graph__9.map delete mode 100644 doc/html/inherit__graph__9.md5 delete mode 100644 doc/html/inherit__graph__9.png delete mode 100644 doc/html/inherits.html delete mode 100644 doc/html/interfacecFileHandle-members.html delete mode 100644 doc/html/livereceiver_8h-source.html delete mode 100644 doc/html/menusetup_8h-source.html delete mode 100644 doc/html/metadata_8h-source.html delete mode 100644 doc/html/object_8h-source.html delete mode 100644 doc/html/recplayer_8h-source.html delete mode 100644 doc/html/resources_8h-source.html delete mode 100644 doc/html/search_8h-source.html delete mode 100644 doc/html/server_8h-source.html delete mode 100644 doc/html/structDLNAIconProfile-members.html delete mode 100644 doc/html/structDLNAIconProfile.html delete mode 100644 doc/html/structDLNAProfile-members.html delete mode 100644 doc/html/structDLNAProfile.html delete mode 100644 doc/html/structcClass-members.html delete mode 100644 doc/html/structcClass.html delete mode 100644 doc/html/structcSortCrit-members.html delete mode 100644 doc/html/structcSortCrit.html delete mode 100644 doc/html/structcUPnPObjectID-members.html delete mode 100644 doc/html/structcUPnPObjectID.html delete mode 100644 doc/html/structcUPnPResultSet-members.html delete mode 100644 doc/html/structcUPnPResultSet.html delete mode 100644 doc/html/tab_b.gif delete mode 100644 doc/html/tab_l.gif delete mode 100644 doc/html/tab_r.gif delete mode 100644 doc/html/tabs.css delete mode 100644 doc/html/upnp_8h-source.html delete mode 100644 doc/html/upnpservice_8h-source.html delete mode 100644 doc/html/upnpwebserver_8h-source.html delete mode 100644 doc/html/util_8h-source.html delete mode 100644 doc/latex/FreeSans.ttf delete mode 100644 doc/latex/Makefile delete mode 100644 doc/latex/annotated.tex delete mode 100644 doc/latex/classcAudioVideoDetector.tex delete mode 100644 doc/latex/classcConnectionManager.tex delete mode 100644 doc/latex/classcConnectionManager__coll__graph.eps delete mode 100644 doc/latex/classcConnectionManager__coll__graph.md5 delete mode 100644 doc/latex/classcConnectionManager__coll__graph.pdf delete mode 100644 doc/latex/classcConnectionManager__inherit__graph.eps delete mode 100644 doc/latex/classcConnectionManager__inherit__graph.md5 delete mode 100644 doc/latex/classcConnectionManager__inherit__graph.pdf delete mode 100644 doc/latex/classcContentDirectory.tex delete mode 100644 doc/latex/classcContentDirectory__coll__graph.eps delete mode 100644 doc/latex/classcContentDirectory__coll__graph.md5 delete mode 100644 doc/latex/classcContentDirectory__coll__graph.pdf delete mode 100644 doc/latex/classcContentDirectory__inherit__graph.eps delete mode 100644 doc/latex/classcContentDirectory__inherit__graph.md5 delete mode 100644 doc/latex/classcContentDirectory__inherit__graph.pdf delete mode 100644 doc/latex/classcDlna.tex delete mode 100644 doc/latex/classcDlna__coll__graph.eps delete mode 100644 doc/latex/classcDlna__coll__graph.md5 delete mode 100644 doc/latex/classcDlna__coll__graph.pdf delete mode 100644 doc/latex/classcFileHandle.eps delete mode 100644 doc/latex/classcFileHandle.pdf delete mode 100644 doc/latex/classcFileHandle.tex delete mode 100644 doc/latex/classcFileHandle__inherit__graph.eps delete mode 100644 doc/latex/classcFileHandle__inherit__graph.md5 delete mode 100644 doc/latex/classcFileHandle__inherit__graph.pdf delete mode 100644 doc/latex/classcFilterCriteria.tex delete mode 100644 doc/latex/classcLiveReceiver.eps delete mode 100644 doc/latex/classcLiveReceiver.pdf delete mode 100644 doc/latex/classcLiveReceiver.tex delete mode 100644 doc/latex/classcLiveReceiver__coll__graph.eps delete mode 100644 doc/latex/classcLiveReceiver__coll__graph.md5 delete mode 100644 doc/latex/classcLiveReceiver__coll__graph.pdf delete mode 100644 doc/latex/classcLiveReceiver__inherit__graph.eps delete mode 100644 doc/latex/classcLiveReceiver__inherit__graph.md5 delete mode 100644 doc/latex/classcLiveReceiver__inherit__graph.pdf delete mode 100644 doc/latex/classcMediaDatabase.tex delete mode 100644 doc/latex/classcMediaDatabase__coll__graph.eps delete mode 100644 doc/latex/classcMediaDatabase__coll__graph.md5 delete mode 100644 doc/latex/classcMediaDatabase__coll__graph.pdf delete mode 100644 doc/latex/classcMediatorInterface.tex delete mode 100644 doc/latex/classcMediatorInterface__inherit__graph.eps delete mode 100644 doc/latex/classcMediatorInterface__inherit__graph.md5 delete mode 100644 doc/latex/classcMediatorInterface__inherit__graph.pdf delete mode 100644 doc/latex/classcMenuSetupUPnP.tex delete mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.eps delete mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.md5 delete mode 100644 doc/latex/classcMenuSetupUPnP__coll__graph.pdf delete mode 100644 doc/latex/classcPathParser.tex delete mode 100644 doc/latex/classcPluginUpnp.tex delete mode 100644 doc/latex/classcPluginUpnp__coll__graph.eps delete mode 100644 doc/latex/classcPluginUpnp__coll__graph.md5 delete mode 100644 doc/latex/classcPluginUpnp__coll__graph.pdf delete mode 100644 doc/latex/classcRecordingPlayer.tex delete mode 100644 doc/latex/classcRecordingPlayer__coll__graph.eps delete mode 100644 doc/latex/classcRecordingPlayer__coll__graph.md5 delete mode 100644 doc/latex/classcRecordingPlayer__coll__graph.pdf delete mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.eps delete mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.md5 delete mode 100644 doc/latex/classcRecordingPlayer__inherit__graph.pdf delete mode 100644 doc/latex/classcRegisteredProfile.tex delete mode 100644 doc/latex/classcRegisteredProfile__coll__graph.eps delete mode 100644 doc/latex/classcRegisteredProfile__coll__graph.md5 delete mode 100644 doc/latex/classcRegisteredProfile__coll__graph.pdf delete mode 100644 doc/latex/classcRow.tex delete mode 100644 doc/latex/classcRows.tex delete mode 100644 doc/latex/classcRows__coll__graph.eps delete mode 100644 doc/latex/classcRows__coll__graph.md5 delete mode 100644 doc/latex/classcRows__coll__graph.pdf delete mode 100644 doc/latex/classcSQLiteDatabase.tex delete mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.eps delete mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.md5 delete mode 100644 doc/latex/classcSQLiteDatabase__coll__graph.pdf delete mode 100644 doc/latex/classcSortCriteria.tex delete mode 100644 doc/latex/classcSortCriteria__coll__graph.eps delete mode 100644 doc/latex/classcSortCriteria__coll__graph.md5 delete mode 100644 doc/latex/classcSortCriteria__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassContainer.tex delete mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassContainer__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassContainer__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPClassItem.tex delete mode 100644 doc/latex/classcUPnPClassItem__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassItem__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassItem__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassItem__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPClassMovie.tex delete mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassMovie__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassMovie__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPClassObject.tex delete mode 100644 doc/latex/classcUPnPClassObject__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassObject__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassObject__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassObject__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast.tex delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPClassVideoItem.tex delete mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.eps delete mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPClassVideoItem__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPConfig.tex delete mode 100644 doc/latex/classcUPnPConfig__coll__graph.eps delete mode 100644 doc/latex/classcUPnPConfig__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPConfig__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPContainerMediator.tex delete mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPContainerMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPContainerMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPItemMediator.tex delete mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPItemMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPItemMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPMovieMediator.tex delete mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPMovieMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPMovieMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPObjectFactory.tex delete mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.eps delete mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPObjectFactory__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPObjectMediator.tex delete mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPObjectMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPObjectMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPObjects.tex delete mode 100644 doc/latex/classcUPnPResource.tex delete mode 100644 doc/latex/classcUPnPResourceMediator.tex delete mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPResourceMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPResource__coll__graph.eps delete mode 100644 doc/latex/classcUPnPResource__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPResource__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPResources.tex delete mode 100644 doc/latex/classcUPnPResources__coll__graph.eps delete mode 100644 doc/latex/classcUPnPResources__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPResources__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPServer.tex delete mode 100644 doc/latex/classcUPnPServer__coll__graph.eps delete mode 100644 doc/latex/classcUPnPServer__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPServer__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator.tex delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPVideoItemMediator.tex delete mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.eps delete mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf delete mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps delete mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5 delete mode 100644 doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf delete mode 100644 doc/latex/classcUPnPWebServer.tex delete mode 100644 doc/latex/classcUPnPWebServer__coll__graph.eps delete mode 100644 doc/latex/classcUPnPWebServer__coll__graph.md5 delete mode 100644 doc/latex/classcUPnPWebServer__coll__graph.pdf delete mode 100644 doc/latex/classcUpnpService.tex delete mode 100644 doc/latex/classcUpnpService__inherit__graph.eps delete mode 100644 doc/latex/classcUpnpService__inherit__graph.md5 delete mode 100644 doc/latex/classcUpnpService__inherit__graph.pdf delete mode 100644 doc/latex/classcVirtualConnection.tex delete mode 100644 doc/latex/doxygen.sty delete mode 100644 doc/latex/hierarchy.tex delete mode 100644 doc/latex/refman.tex delete mode 100644 doc/latex/structDLNAIconProfile.tex delete mode 100644 doc/latex/structDLNAProfile.tex delete mode 100644 doc/latex/structcClass.tex delete mode 100644 doc/latex/structcSortCrit.tex delete mode 100644 doc/latex/structcUPnPObjectID.tex delete mode 100644 doc/latex/structcUPnPResultSet.tex delete mode 100644 doc/upnpdlna.dox diff --git a/doc/Source Code Documentation.zip b/doc/Source Code Documentation.zip deleted file mode 100644 index db663fa..0000000 Binary files a/doc/Source Code Documentation.zip and /dev/null differ diff --git a/doc/doxygen.err b/doc/doxygen.err deleted file mode 100644 index e69de29..0000000 diff --git a/doc/html/annotated.html b/doc/html/annotated.html deleted file mode 100644 index 64735a2..0000000 --- a/doc/html/annotated.html +++ /dev/null @@ -1,78 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class List - - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/avdetector_8h-source.html b/doc/html/avdetector_8h-source.html deleted file mode 100644 index bb72dae..0000000 --- a/doc/html/avdetector_8h-source.html +++ /dev/null @@ -1,48 +0,0 @@ - - -UPnP/DLNA plugin for VDR: misc/avdetector.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcAudioVideoDetector-members.html b/doc/html/classcAudioVideoDetector-members.html deleted file mode 100644 index 4765c64..0000000 --- a/doc/html/classcAudioVideoDetector-members.html +++ /dev/null @@ -1,34 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cAudioVideoDetector Member List

This is the complete list of members for cAudioVideoDetector, including all inherited members.

- - - -
cAudioVideoDetector() (defined in cAudioVideoDetector)cAudioVideoDetector [inline]
detectVideoProperties(cUPnPResource *Resource, const char *Filename)cAudioVideoDetector
~cAudioVideoDetector() (defined in cAudioVideoDetector)cAudioVideoDetector [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcAudioVideoDetector.html b/doc/html/classcAudioVideoDetector.html deleted file mode 100644 index 9c77232..0000000 --- a/doc/html/classcAudioVideoDetector.html +++ /dev/null @@ -1,85 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cAudioVideoDetector Class Reference - - - - - -
-

cAudioVideoDetector Class Reference

#include <avdetector.h> -

- -

-List of all members. - - - - -

Public Member Functions

int detectVideoProperties (cUPnPResource *Resource, const char *Filename)
-


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.


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int cAudioVideoDetector::detectVideoProperties (cUPnPResource Resource,
const char *  Filename 
)
-
-
- -

-Detect video properties

-This detects video properties of a video stream and stores them in the Resource object.

-

Parameters:
- - - -
Resource the resource, where to save the data
Filename the file, which shall be read
-
-
Returns:
returns
    -
  • 0, if the detection was successful
  • <0, otherwise
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcConnectionManager-members.html b/doc/html/classcConnectionManager-members.html deleted file mode 100644 index 2fed227..0000000 --- a/doc/html/classcConnectionManager-members.html +++ /dev/null @@ -1,40 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cConnectionManager Member List

This is the complete list of members for cConnectionManager, including all inherited members.

- - - - - - - - - -
cConnectionManager(UpnpDevice_Handle DeviceHandle)cConnectionManager
execute(Upnp_Action_Request *Request)cConnectionManager [virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cConnectionManager [virtual]
subscribe(Upnp_Subscription_Request *Request)cConnectionManager [virtual]
~cConnectionManager() (defined in cConnectionManager)cConnectionManager [virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcConnectionManager.html b/doc/html/classcConnectionManager.html deleted file mode 100644 index 1d6f727..0000000 --- a/doc/html/classcConnectionManager.html +++ /dev/null @@ -1,195 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cConnectionManager Class Reference - - - - - -
-

cConnectionManager Class Reference

#include <connectionmanager.h> -

-

-Inheritance diagram for cConnectionManager:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cConnectionManager:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - -

Public Member Functions

 cConnectionManager (UpnpDevice_Handle DeviceHandle)
virtual int subscribe (Upnp_Subscription_Request *Request)
virtual int execute (Upnp_Action_Request *Request)
virtual void setError (Upnp_Action_Request *Request, int Error)
-


Detailed Description

-The connection manager service

-This is the connection manager service which handles all incoming connection, creates and destroys connections to clients.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cConnectionManager::cConnectionManager (UpnpDevice_Handle  DeviceHandle  ) 
-
-
- -

-Constructor of a Connection manager

-This creates an instance of a Connection Manager Service and provides interfaces for executing actions and subscribing on events.

Parameters:
- - -
DeviceHandle the UPnP device handle of this root device
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - -
int cConnectionManager::execute (Upnp_Action_Request *  Request  )  [virtual]
-
-
- -

-Executes an action

-This executes an action initialized by a control point. The result is stored in the first parameter.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Input and output parameters of an action
-
- -

Implements cUpnpService.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cConnectionManager::setError (Upnp_Action_Request *  Request,
int  Error 
) [virtual]
-
-
- -

-Sets an error on an action request

-This function puts a error message into the action request structure according to its error code

-

Parameters:
- - - -
Request the action request, to set the error for
Error the error code of which the message should be obtained
-
- -

Reimplemented from cUpnpService.

- -
-

- -

-
- - - - - - - - - -
int cConnectionManager::subscribe (Upnp_Subscription_Request *  Request  )  [virtual]
-
-
- -

-Subscribes to an event

-This is a callback function to register a new subscriber for an event.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Information about the subscription
-
- -

Implements cUpnpService.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcConnectionManager__coll__graph.map b/doc/html/classcConnectionManager__coll__graph.map deleted file mode 100644 index f6ab96b..0000000 --- a/doc/html/classcConnectionManager__coll__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcConnectionManager__coll__graph.md5 b/doc/html/classcConnectionManager__coll__graph.md5 deleted file mode 100644 index 4428901..0000000 --- a/doc/html/classcConnectionManager__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c596fccb5f0b4ca489f1eb1f12e1af74 \ No newline at end of file diff --git a/doc/html/classcConnectionManager__coll__graph.png b/doc/html/classcConnectionManager__coll__graph.png deleted file mode 100644 index b91a65c..0000000 Binary files a/doc/html/classcConnectionManager__coll__graph.png and /dev/null differ diff --git a/doc/html/classcConnectionManager__inherit__graph.map b/doc/html/classcConnectionManager__inherit__graph.map deleted file mode 100644 index bb14ae8..0000000 --- a/doc/html/classcConnectionManager__inherit__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcConnectionManager__inherit__graph.md5 b/doc/html/classcConnectionManager__inherit__graph.md5 deleted file mode 100644 index d2430c7..0000000 --- a/doc/html/classcConnectionManager__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2717bb52774dac26511ba8006e57dc5b \ No newline at end of file diff --git a/doc/html/classcConnectionManager__inherit__graph.png b/doc/html/classcConnectionManager__inherit__graph.png deleted file mode 100644 index 7967eb5..0000000 Binary files a/doc/html/classcConnectionManager__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcContentDirectory-members.html b/doc/html/classcContentDirectory-members.html deleted file mode 100644 index 5c1b27e..0000000 --- a/doc/html/classcContentDirectory-members.html +++ /dev/null @@ -1,40 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cContentDirectory Member List

This is the complete list of members for cContentDirectory, including all inherited members.

- - - - - - - - - -
cContentDirectory(UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)cContentDirectory
execute(Upnp_Action_Request *Request)cContentDirectory [virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cContentDirectory [virtual]
subscribe(Upnp_Subscription_Request *Request)cContentDirectory [virtual]
~cContentDirectory() (defined in cContentDirectory)cContentDirectory [virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcContentDirectory.html b/doc/html/classcContentDirectory.html deleted file mode 100644 index a016111..0000000 --- a/doc/html/classcContentDirectory.html +++ /dev/null @@ -1,205 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cContentDirectory Class Reference - - - - - -
-

cContentDirectory Class Reference

#include <contentdirectory.h> -

-

-Inheritance diagram for cContentDirectory:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cContentDirectory:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - -

Public Member Functions

 cContentDirectory (UpnpDevice_Handle DeviceHandle, cMediaDatabase *MediaDatabase)
virtual int subscribe (Upnp_Subscription_Request *Request)
virtual int execute (Upnp_Action_Request *Request)
virtual void setError (Upnp_Action_Request *Request, int Error)
-


Detailed Description

-The content directory service

-This is the content directory service which handles all incoming requests for contents managed by the media server.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cContentDirectory::cContentDirectory (UpnpDevice_Handle  DeviceHandle,
cMediaDatabase MediaDatabase 
)
-
-
- -

-Constructor of a Content Directory

-This creates an instance of a Content Directory Service and provides interfaces for executing actions and subscribing on events.

Parameters:
- - - -
DeviceHandle The UPnP device handle of the root device
MediaDatabase the media database where requests are processed
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - -
int cContentDirectory::execute (Upnp_Action_Request *  Request  )  [virtual]
-
-
- -

-Executes an action

-This executes an action initialized by a control point. The result is stored in the first parameter.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Input and output parameters of an action
-
- -

Implements cUpnpService.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cContentDirectory::setError (Upnp_Action_Request *  Request,
int  Error 
) [virtual]
-
-
- -

-Sets an error on an action request

-This function puts a error message into the action request structure according to its error code

-

Parameters:
- - - -
Request the action request, to set the error for
Error the error code of which the message should be obtained
-
- -

Reimplemented from cUpnpService.

- -
-

- -

-
- - - - - - - - - -
int cContentDirectory::subscribe (Upnp_Subscription_Request *  Request  )  [virtual]
-
-
- -

-Subscribes to an event

-This is a callback function to register a new subscriber for an event.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Information about the subscription
-
- -

Implements cUpnpService.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcContentDirectory__coll__graph.map b/doc/html/classcContentDirectory__coll__graph.map deleted file mode 100644 index 7147f44..0000000 --- a/doc/html/classcContentDirectory__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/doc/html/classcContentDirectory__coll__graph.md5 b/doc/html/classcContentDirectory__coll__graph.md5 deleted file mode 100644 index 12d3f6f..0000000 --- a/doc/html/classcContentDirectory__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -29de1fb464313de771478004ae156c36 \ No newline at end of file diff --git a/doc/html/classcContentDirectory__coll__graph.png b/doc/html/classcContentDirectory__coll__graph.png deleted file mode 100644 index d576367..0000000 Binary files a/doc/html/classcContentDirectory__coll__graph.png and /dev/null differ diff --git a/doc/html/classcContentDirectory__inherit__graph.map b/doc/html/classcContentDirectory__inherit__graph.map deleted file mode 100644 index 55ce55e..0000000 --- a/doc/html/classcContentDirectory__inherit__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcContentDirectory__inherit__graph.md5 b/doc/html/classcContentDirectory__inherit__graph.md5 deleted file mode 100644 index 5198edf..0000000 --- a/doc/html/classcContentDirectory__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5c5dac649197895a6ff0b0f9842237ad \ No newline at end of file diff --git a/doc/html/classcContentDirectory__inherit__graph.png b/doc/html/classcContentDirectory__inherit__graph.png deleted file mode 100644 index 0a73810..0000000 Binary files a/doc/html/classcContentDirectory__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcDlna-members.html b/doc/html/classcDlna-members.html deleted file mode 100644 index a013fb6..0000000 --- a/doc/html/classcDlna-members.html +++ /dev/null @@ -1,42 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cDlna Member List

This is the complete list of members for cDlna, including all inherited members.

- - - - - - - - - - - -
cUPnPServer (defined in cDlna)cDlna [friend]
getDeviceDescription(const char *URLBase)cDlna
getInstance(void)cDlna [static]
getProfileOfChannel(cChannel *Channel)cDlna
getProfileOfFile(cString File)cDlna
getProfileOfRecording(cRecording *Recording)cDlna
getProtocolInfo(DLNAProfile *Prof)cDlna
getSupportedProtocols()cDlna
registerMainProfiles()cDlna
registerProfile(DLNAProfile *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)cDlna
~cDlna() (defined in cDlna)cDlna [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcDlna.html b/doc/html/classcDlna.html deleted file mode 100644 index 904a2a2..0000000 --- a/doc/html/classcDlna.html +++ /dev/null @@ -1,335 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cDlna Class Reference - - - - - -
-

cDlna Class Reference

#include <dlna.h> -

-

-Collaboration diagram for cDlna:
-
-

Collaboration graph
-
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

const char * getDeviceDescription (const char *URLBase)
void registerProfile (DLNAProfile *Profile, int Op=-1, const char *Ps=NULL, int Ci=-1, unsigned int Flags=0)
void registerMainProfiles ()
const char * getSupportedProtocols ()
const char * getProtocolInfo (DLNAProfile *Prof)
DLNAProfilegetProfileOfChannel (cChannel *Channel)
DLNAProfilegetProfileOfRecording (cRecording *Recording)
DLNAProfilegetProfileOfFile (cString File)

Static Public Member Functions

static cDlnagetInstance (void)

Friends

-class cUPnPServer
-


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.


Member Function Documentation

- -
-
- - - - - - - - - -
const char * cDlna::getDeviceDescription (const char *  URLBase  ) 
-
-
- -

-Device description document

-This will return the device description document with service type definitions as well as some DLNA specific information

-

Returns:
The description document
-
Parameters:
- - -
URLBase the URLBase to be set in the document
-
- -
-

- -

-
- - - - - - - - - -
cDlna * cDlna::getInstance (void   )  [static]
-
-
- -

-Returns the instance of DLNA object

-This will create a DLNA object instance. It will return the same instance on subsequent calls.

-

Returns:
the DLNA object instance
- -
-

- -

-
- - - - - - - - - -
DLNAProfile * cDlna::getProfileOfChannel (cChannel *  Channel  ) 
-
-
- -

-Profile of a channel

-Returns the DLNA profile of a VDR channel. It checks the video type to determine which profile will match.

-

Returns:
the matching DLNA profile
-
Parameters:
- - -
Channel the channel of which the profile should created from
-
- -
-

- -

-
- - - - - - - - - -
DLNAProfile * cDlna::getProfileOfFile (cString  File  ) 
-
-
- -

-Profile of a file

-Returns the DLNA profile of a file. It checks the content of the file with ffmpeg to determine which profile will match.

-

Returns:
the matching DLNA profile
-
Parameters:
- - -
File the file of which the profile should be created from
-
- -
-

- -

-
- - - - - - - - - -
DLNAProfile * cDlna::getProfileOfRecording (cRecording *  Recording  ) 
-
-
- -

-Profile of a recording

-Returns the DLNA profile of a VDR recording. It checks the video file to determine which profile will match.

-

Returns:
the matching DLNA profile
-
Parameters:
- - -
Recording the recording of which the profile should be created from
-
- -
-

- -

-
- - - - - - - - - -
const char * cDlna::getProtocolInfo (DLNAProfile Prof  ) 
-
-
- -

-Protocol info of a specific DLNA profile

-Returns the protocol info string of a specific DLNA profile with its options and flags.

-

Returns:
the protocol info string of the profile
-
Parameters:
- - -
Prof the Profile of which the protocol info shall be returned
-
- -
-

- -

-
- - - - - - - - -
const char * cDlna::getSupportedProtocols (  ) 
-
-
- -

-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.

-

Returns:
CSV list of registered protocols
- -
-

- -

-
- - - - - - - - -
void cDlna::registerMainProfiles (  ) 
-
-
- -

-Registeres all known DLNA profiles

-Registeres all well known DLNA profiles with its known options -

-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void cDlna::registerProfile (DLNAProfile Profile,
int  Op = -1,
const char *  Ps = NULL,
int  Ci = -1,
unsigned int  Flags = 0 
)
-
-
- -

-Registeres a DLNA profile

-Registeres a DLNA profile with specific optional options

-

See also:
common.h
-
Parameters:
- - - - - - -
Profile the DLNA profile
Op operation mode
Ps play speed (CSV list)
Ci conversion indication flag
Flags DLNA flags
-
- -
-

-


The documentation for this class was generated from the following files:
    -
  • upnpcomponents/dlna.h
  • upnpcomponents/dlna.cpp
-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcDlna__coll__graph.map b/doc/html/classcDlna__coll__graph.map deleted file mode 100644 index e69de29..0000000 diff --git a/doc/html/classcDlna__coll__graph.md5 b/doc/html/classcDlna__coll__graph.md5 deleted file mode 100644 index 49dd05a..0000000 --- a/doc/html/classcDlna__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -00203167dafd3fc1977a5c34551b3940 \ No newline at end of file diff --git a/doc/html/classcDlna__coll__graph.png b/doc/html/classcDlna__coll__graph.png deleted file mode 100644 index f4cb92f..0000000 Binary files a/doc/html/classcDlna__coll__graph.png and /dev/null differ diff --git a/doc/html/classcFileHandle-members.html b/doc/html/classcFileHandle-members.html deleted file mode 100644 index e762927..0000000 --- a/doc/html/classcFileHandle-members.html +++ /dev/null @@ -1,37 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cFileHandle Member List

This is the complete list of members for cFileHandle, including all inherited members.

- - - - - - -
close()=0cFileHandle [pure virtual]
open(UpnpOpenFileMode mode)=0cFileHandle [pure virtual]
read(char *buf, size_t buflen)=0cFileHandle [pure virtual]
seek(off_t offset, int whence)=0cFileHandle [pure virtual]
write(char *buf, size_t buflen)=0cFileHandle [pure virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcFileHandle.html b/doc/html/classcFileHandle.html deleted file mode 100644 index 6572779..0000000 --- a/doc/html/classcFileHandle.html +++ /dev/null @@ -1,273 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cFileHandle Class Reference - - - - - -
-

cFileHandle Class Reference

#include <filehandle.h> -

-

-Inheritance diagram for cFileHandle:
-
-

Inheritance graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - -

Public Member Functions

virtual void open (UpnpOpenFileMode mode)=0
virtual int read (char *buf, size_t buflen)=0
virtual int write (char *buf, size_t buflen)=0
virtual int seek (off_t offset, int whence)=0
virtual void close ()=0
-


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.


Member Function Documentation

- -
-
- - - - - - - - -
virtual void cFileHandle::close (  )  [pure virtual]
-
-
- -

-Closes the open file

-This will close open file handles and frees the memory obtained by it. -

Implemented in cLiveReceiver, and cRecordingPlayer.

- -
-

- -

-
- - - - - - - - - -
virtual void cFileHandle::open (UpnpOpenFileMode  mode  )  [pure virtual]
-
-
- -

-Opens the file

-Opens the file at the given mode. These can be:

    -
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
-

-

Parameters:
- - -
mode The file mode, i.e. one of the following
    -
  • UPNP_READ
  • UPNP_WRITE
-
-
-
Parameters:
- - -
mode The file mode, i.e. one of the following
    -
  • UPNP_READ
  • UPNP_WRITE
-
-
- -

Implemented in cLiveReceiver, and cRecordingPlayer.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
virtual int cFileHandle::read (char *  buf,
size_t  buflen 
) [pure virtual]
-
-
- -

-Reads from the file

-Reads from the file a certain amount of bytes and stores them in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implemented in cLiveReceiver, and cRecordingPlayer.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
virtual int cFileHandle::seek (off_t  offset,
int  whence 
) [pure virtual]
-
-
- -

-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

-

    -
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
-

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
offset The byte offset in the file
whence one of the following
    -
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
-
-
-
Parameters:
- - - -
offset The byte offset in the file
whence one of the following
    -
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
-
-
- -

Implemented in cLiveReceiver, and cRecordingPlayer.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
virtual int cFileHandle::write (char *  buf,
size_t  buflen 
) [pure virtual]
-
-
- -

-Writes to the file

-Writes to the file a certain amount of bytes which are stored in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implemented in cLiveReceiver, and cRecordingPlayer.

- -
-

-


The documentation for this class was generated from the following file: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcFileHandle.png b/doc/html/classcFileHandle.png deleted file mode 100644 index d370300..0000000 Binary files a/doc/html/classcFileHandle.png and /dev/null differ diff --git a/doc/html/classcFileHandle__inherit__graph.map b/doc/html/classcFileHandle__inherit__graph.map deleted file mode 100644 index ba76f2e..0000000 --- a/doc/html/classcFileHandle__inherit__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcFileHandle__inherit__graph.md5 b/doc/html/classcFileHandle__inherit__graph.md5 deleted file mode 100644 index dfabc5b..0000000 --- a/doc/html/classcFileHandle__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -18dfef99a286e8a72c46747e9b0a3d59 \ No newline at end of file diff --git a/doc/html/classcFileHandle__inherit__graph.png b/doc/html/classcFileHandle__inherit__graph.png deleted file mode 100644 index b0df07e..0000000 Binary files a/doc/html/classcFileHandle__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcFilterCriteria-members.html b/doc/html/classcFilterCriteria-members.html deleted file mode 100644 index 0936aef..0000000 --- a/doc/html/classcFilterCriteria-members.html +++ /dev/null @@ -1,33 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cFilterCriteria Member List

This is the complete list of members for cFilterCriteria, including all inherited members.

- - -
parse(const char *Filter)cFilterCriteria [static]
~cFilterCriteria() (defined in cFilterCriteria)cFilterCriteria [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcFilterCriteria.html b/doc/html/classcFilterCriteria.html deleted file mode 100644 index fa8d393..0000000 --- a/doc/html/classcFilterCriteria.html +++ /dev/null @@ -1,73 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cFilterCriteria Class Reference - - - - - -
-

cFilterCriteria Class Reference

#include <search.h> -

- -

-List of all members. - - - - -

Static Public Member Functions

static cStringList * parse (const char *Filter)
-


Detailed Description

-Parses the filter criteria

-This parses the filter criteria which comes from a Browse or Search request.


Member Function Documentation

- -
-
- - - - - - - - - -
cStringList * cFilterCriteria::parse (const char *  Filter  )  [static]
-
-
- -

-Parses the filter criteria

-This parses the filter criteria. It may be a empty string list, a NULL pointer or a list with properties which shall be shown in the DIDL-Lite fragment.

-

Returns:
the stringlist containing the filter
-
Parameters:
- - -
Filter the filter string
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcLiveReceiver-members.html b/doc/html/classcLiveReceiver-members.html deleted file mode 100644 index 8cd1f67..0000000 --- a/doc/html/classcLiveReceiver-members.html +++ /dev/null @@ -1,42 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cLiveReceiver Member List

This is the complete list of members for cLiveReceiver, including all inherited members.

- - - - - - - - - - - -
Action(void)cLiveReceiver [protected, virtual]
Activate(bool On)cLiveReceiver [protected, virtual]
close()cLiveReceiver [virtual]
newInstance(cChannel *Channel, int Priority)cLiveReceiver [static]
open(UpnpOpenFileMode mode)cLiveReceiver [virtual]
read(char *buf, size_t buflen)cLiveReceiver [virtual]
Receive(uchar *Data, int Length)cLiveReceiver [protected, virtual]
seek(off_t offset, int whence)cLiveReceiver [virtual]
write(char *buf, size_t buflen)cLiveReceiver [virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]
~cLiveReceiver(void) (defined in cLiveReceiver)cLiveReceiver [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcLiveReceiver.html b/doc/html/classcLiveReceiver.html deleted file mode 100644 index d312473..0000000 --- a/doc/html/classcLiveReceiver.html +++ /dev/null @@ -1,388 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cLiveReceiver Class Reference - - - - - -
-

cLiveReceiver Class Reference

#include <livereceiver.h> -

-

-Inheritance diagram for cLiveReceiver:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cLiveReceiver:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

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 whence)
virtual void close ()

Static Public Member Functions

static cLiveReceivernewInstance (cChannel *Channel, int Priority)

Protected Member Functions

virtual void Receive (uchar *Data, int Length)
virtual void Activate (bool On)
virtual void Action (void)
-


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.


Member Function Documentation

- -
-
- - - - - - - - - -
void cLiveReceiver::Action (void   )  [protected, virtual]
-
-
- -

-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 -

-

- -

-
- - - - - - - - - -
void cLiveReceiver::Activate (bool  On  )  [protected, virtual]
-
-
- -

-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 true, the receiver will be activated. If it is false, the receiver will be deactivated and stops its threads.

Parameters:
- - -
On Activates the receiver thread
-
- -
-

- -

-
- - - - - - - - -
void cLiveReceiver::close (  )  [virtual]
-
-
- -

-Closes the open file

-This will close open file handles and frees the memory obtained by it. -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
cLiveReceiver * cLiveReceiver::newInstance (cChannel *  Channel,
int  Priority 
) [static]
-
-
- -

-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.

-

Returns:
returns a new liveReceiver instance
-
Parameters:
- - - -
Channel the channel which shall be tuned
Priority the priority level
-
- -
-

- -

-
- - - - - - - - - -
void cLiveReceiver::open (UpnpOpenFileMode  mode  )  [virtual]
-
-
- -

-Opens the file

-Opens the file at the given mode. These can be:

    -
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
-

-

Parameters:
- - -
mode The file mode, i.e. one of the following
    -
  • UPNP_READ
  • UPNP_WRITE
-
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cLiveReceiver::read (char *  buf,
size_t  buflen 
) [virtual]
-
-
- -

-Reads from the file

-Reads from the file a certain amount of bytes and stores them in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cLiveReceiver::Receive (uchar *  Data,
int  Length 
) [protected, virtual]
-
-
- -

-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

Parameters:
- - - -
Data The data received from VDR
Length The length of the data packet, usually 188 bytes
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cLiveReceiver::seek (off_t  offset,
int  whence 
) [virtual]
-
-
- -

-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

-

    -
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
-

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
offset The byte offset in the file
whence one of the following
    -
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
-
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cLiveReceiver::write (char *  buf,
size_t  buflen 
) [virtual]
-
-
- -

-Writes to the file

-Writes to the file a certain amount of bytes which are stored in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implements cFileHandle.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcLiveReceiver.png b/doc/html/classcLiveReceiver.png deleted file mode 100644 index efedd53..0000000 Binary files a/doc/html/classcLiveReceiver.png and /dev/null differ diff --git a/doc/html/classcLiveReceiver__coll__graph.map b/doc/html/classcLiveReceiver__coll__graph.map deleted file mode 100644 index 0c07258..0000000 --- a/doc/html/classcLiveReceiver__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcLiveReceiver__coll__graph.md5 b/doc/html/classcLiveReceiver__coll__graph.md5 deleted file mode 100644 index 2a339c4..0000000 --- a/doc/html/classcLiveReceiver__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9aba9a994278caeebd8a47222983192b \ No newline at end of file diff --git a/doc/html/classcLiveReceiver__coll__graph.png b/doc/html/classcLiveReceiver__coll__graph.png deleted file mode 100644 index 4c2ac2a..0000000 Binary files a/doc/html/classcLiveReceiver__coll__graph.png and /dev/null differ diff --git a/doc/html/classcLiveReceiver__inherit__graph.map b/doc/html/classcLiveReceiver__inherit__graph.map deleted file mode 100644 index 0c07258..0000000 --- a/doc/html/classcLiveReceiver__inherit__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcLiveReceiver__inherit__graph.md5 b/doc/html/classcLiveReceiver__inherit__graph.md5 deleted file mode 100644 index 2a339c4..0000000 --- a/doc/html/classcLiveReceiver__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9aba9a994278caeebd8a47222983192b \ No newline at end of file diff --git a/doc/html/classcLiveReceiver__inherit__graph.png b/doc/html/classcLiveReceiver__inherit__graph.png deleted file mode 100644 index 4c2ac2a..0000000 Binary files a/doc/html/classcLiveReceiver__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcMediaDatabase-members.html b/doc/html/classcMediaDatabase-members.html deleted file mode 100644 index 482718b..0000000 --- a/doc/html/classcMediaDatabase-members.html +++ /dev/null @@ -1,42 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cMediaDatabase Member List

This is the complete list of members for cMediaDatabase, including all inherited members.

- - - - - - - - - - - -
addFastFind(cUPnPClassObject *Object, const char *FastFind)cMediaDatabase
browse(OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")cMediaDatabase
cMediaDatabase()cMediaDatabase
cUPnPObjectMediator (defined in cMediaDatabase)cMediaDatabase [friend]
cUPnPServer (defined in cMediaDatabase)cMediaDatabase [friend]
getContainerUpdateIDs()cMediaDatabase
getObjectByFastFind(const char *FastFind)cMediaDatabase
getObjectByID(cUPnPObjectID ID)cMediaDatabase
getSystemUpdateID()cMediaDatabase
search(OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")cMediaDatabase
~cMediaDatabase() (defined in cMediaDatabase)cMediaDatabase [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMediaDatabase.html b/doc/html/classcMediaDatabase.html deleted file mode 100644 index bb2e160..0000000 --- a/doc/html/classcMediaDatabase.html +++ /dev/null @@ -1,390 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cMediaDatabase Class Reference - - - - - -
-

cMediaDatabase Class Reference

#include <metadata.h> -

-

-Collaboration diagram for cMediaDatabase:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

unsigned int getSystemUpdateID ()
const char * getContainerUpdateIDs ()
 cMediaDatabase ()
int addFastFind (cUPnPClassObject *Object, const char *FastFind)
cUPnPClassObjectgetObjectByFastFind (const char *FastFind)
cUPnPClassObjectgetObjectByID (cUPnPObjectID ID)
int browse (OUT cUPnPResultSet **Results, IN const char *ID, IN bool BrowseMetadata, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")
int search (OUT cUPnPResultSet **Results, IN const char *ID, IN const char *Search, IN const char *Filter="*", IN unsigned int Offset=0, IN unsigned int Count=0, IN const char *SortCriteria="")

Friends

-class cUPnPServer
-class cUPnPObjectMediator
-


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.

-

See also:
cUPnPClassObject
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cMediaDatabase::cMediaDatabase (  ) 
-
-
- -

-Constructor

-This creates an instance of the media database. -

-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int cMediaDatabase::addFastFind (cUPnPClassObject Object,
const char *  FastFind 
)
-
-
- -

-Add a Fastfind

-This creates a 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.

-

Returns:
returns
    -
  • -1, if the creation was successful
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object, which should be registered
FastFind the string with which the object shall be relocated
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int cMediaDatabase::browse (OUT cUPnPResultSet **  Results,
IN const char *  ID,
IN bool  BrowseMetadata,
IN const char *  Filter = "*",
IN unsigned int  Offset = 0,
IN unsigned int  Count = 0,
IN const char *  SortCriteria = "" 
)
-
-
- -

-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.

-

Returns:
returns an integer representing one of the following:
    -
  • UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
  • UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while processing the request
  • UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
  • UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
  • UPNP_E_SUCCESS, if the request was successful
-
-
Parameters:
- - - - - - - - -
Results the result of the request
ID the objectID of the request
BrowseMetadata true to browse metadata, false otherwise
Filter the filter applied to the returned metadata
Offset the starting offset
Count maximum count returned
SortCriteria sorts the results before returning them
-
- -
-

- -

-
- - - - - - - - -
const char * cMediaDatabase::getContainerUpdateIDs (  ) 
-
-
- -

-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.

-

Returns:
CSV list of ContainerUpdateIDs
- -
-

- -

-
- - - - - - - - - -
cUPnPClassObject * cMediaDatabase::getObjectByFastFind (const char *  FastFind  ) 
-
-
- -

-Finds a object by Fastfind

-This returns the object via the Fastfind string. The object must be previosly registered via 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 also:
cMediaDatabase::addFastFind
-
Returns:
The object associated with FastFind
-
Parameters:
- - -
FastFind the string with which the object shall be relocated
-
- -
-

- -

-
- - - - - - - - - -
cUPnPClassObject * cMediaDatabase::getObjectByID (cUPnPObjectID  ID  ) 
-
-
- -

-Finds a object by its ObjectID

-This returns the object via its ObjectID.

-It tries to find the object in the internal object cache. If this fails, the object will be loaded from the database.

-

Returns:
The object associated with FastFind
-
Parameters:
- - -
ID The ObjectID of the requested object
-
- -
-

- -

-
- - - - - - - - -
unsigned int cMediaDatabase::getSystemUpdateID (  ) 
-
-
- -

-Returns the SystemUpdateID

-This returns the SystemUpdateID. This changes whenever anything changed within the content directory. This value will be sent through the UPnP network every 2 seconds.

-

Returns:
the SystemUpdateID
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int cMediaDatabase::search (OUT cUPnPResultSet **  Results,
IN const char *  ID,
IN const char *  Search,
IN const char *  Filter = "*",
IN unsigned int  Offset = 0,
IN unsigned int  Count = 0,
IN const char *  SortCriteria = "" 
)
-
-
- -

-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.
-
Returns:
returns an integer representing one of the following:
    -
  • UPNP_CDS_E_INVALID_SORT_CRITERIA, when the sort criteria is malformed
  • UPNP_CDS_E_CANT_PROCESS_REQUEST, when there is an internal error while processing the request
  • UPNP_CDS_E_NO_SUCH_OBJECT, when the requested ObjectID does not exist
  • UPNP_SOAP_E_ACTION_FAILED, when the action failed due any reasons
  • UPNP_E_SUCCESS, if the request was successful
-
-
Parameters:
- - - - - - - - -
Results the result of the request
ID the ContainerID
Search the search string
Filter the filter applied to the returned metadata
Offset the starting offset
Count maximum count returned
SortCriteria sorts the results before returning them
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMediaDatabase__coll__graph.map b/doc/html/classcMediaDatabase__coll__graph.map deleted file mode 100644 index 476ee8c..0000000 --- a/doc/html/classcMediaDatabase__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/doc/html/classcMediaDatabase__coll__graph.md5 b/doc/html/classcMediaDatabase__coll__graph.md5 deleted file mode 100644 index 069efa7..0000000 --- a/doc/html/classcMediaDatabase__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -800d195c448fa938abc20a29091c18f5 \ No newline at end of file diff --git a/doc/html/classcMediaDatabase__coll__graph.png b/doc/html/classcMediaDatabase__coll__graph.png deleted file mode 100644 index 69e8f1c..0000000 Binary files a/doc/html/classcMediaDatabase__coll__graph.png and /dev/null differ diff --git a/doc/html/classcMediatorInterface-members.html b/doc/html/classcMediatorInterface-members.html deleted file mode 100644 index 147b70b..0000000 --- a/doc/html/classcMediatorInterface-members.html +++ /dev/null @@ -1,37 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cMediatorInterface Member List

This is the complete list of members for cMediatorInterface, including all inherited members.

- - - - - - -
clearObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
createObject(const char *Title, bool Restricted)=0cMediatorInterface [pure virtual]
deleteObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
getObject(cUPnPObjectID ID)=0cMediatorInterface [pure virtual]
saveObject(cUPnPClassObject *Object)=0cMediatorInterface [pure virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMediatorInterface.html b/doc/html/classcMediatorInterface.html deleted file mode 100644 index 7e202b9..0000000 --- a/doc/html/classcMediatorInterface.html +++ /dev/null @@ -1,226 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cMediatorInterface Class Reference - - - - - -
-

cMediatorInterface Class Reference

#include <object.h> -

-

-Inheritance diagram for cMediatorInterface:
-
-

Inheritance graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - -

Public Member Functions

virtual cUPnPClassObjectcreateObject (const char *Title, bool Restricted)=0
virtual cUPnPClassObjectgetObject (cUPnPObjectID ID)=0
virtual int saveObject (cUPnPClassObject *Object)=0
virtual int deleteObject (cUPnPClassObject *Object)=0
virtual int clearObject (cUPnPClassObject *Object)=0
-


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.


Member Function Documentation

- -
-
- - - - - - - - - -
virtual int cMediatorInterface::clearObject (cUPnPClassObject Object  )  [pure virtual]
-
-
- -

-Clears the object

-This clears the object, i.e. all its children will be removed and deleted from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be cleared
-
- -

Implemented in cUPnPObjectMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
virtual cUPnPClassObject* cMediatorInterface::createObject (const char *  Title,
bool  Restricted 
) [pure virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Implemented in cUPnPObjectMediator, cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - -
virtual int cMediatorInterface::deleteObject (cUPnPClassObject Object  )  [pure virtual]
-
-
- -

-Deletes the object

-This deletes the object in the database by removing all its children and then deleting the contents from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be deleted
-
- -

Implemented in cUPnPObjectMediator.

- -
-

- -

-
- - - - - - - - - -
virtual cUPnPClassObject* cMediatorInterface::getObject (cUPnPObjectID  ID  )  [pure virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Implemented in cUPnPObjectMediator, cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - -
virtual int cMediatorInterface::saveObject (cUPnPClassObject Object  )  [pure virtual]
-
-
- -

-Saves the object

-This saves the object in the database by updating the values in the database with those in the object.

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Implemented in cUPnPObjectMediator.

- -
-

-


The documentation for this class was generated from the following file: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMediatorInterface__inherit__graph.map b/doc/html/classcMediatorInterface__inherit__graph.map deleted file mode 100644 index aef4716..0000000 --- a/doc/html/classcMediatorInterface__inherit__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/doc/html/classcMediatorInterface__inherit__graph.md5 b/doc/html/classcMediatorInterface__inherit__graph.md5 deleted file mode 100644 index 6d1db00..0000000 --- a/doc/html/classcMediatorInterface__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -97634db0ec0ff36b35cb48308b65ba75 \ No newline at end of file diff --git a/doc/html/classcMediatorInterface__inherit__graph.png b/doc/html/classcMediatorInterface__inherit__graph.png deleted file mode 100644 index 3fbe85c..0000000 Binary files a/doc/html/classcMediatorInterface__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcMenuSetupUPnP-members.html b/doc/html/classcMenuSetupUPnP-members.html deleted file mode 100644 index cd0baf5..0000000 --- a/doc/html/classcMenuSetupUPnP-members.html +++ /dev/null @@ -1,36 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cMenuSetupUPnP Member List

This is the complete list of members for cMenuSetupUPnP, including all inherited members.

- - - - - -
cMenuSetupUPnP() (defined in cMenuSetupUPnP)cMenuSetupUPnP
Load(void)cMenuSetupUPnP [protected]
ProcessKey(eKeys Key)cMenuSetupUPnP [virtual]
Store(void)cMenuSetupUPnP [protected, virtual]
Update(void)cMenuSetupUPnP [protected]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMenuSetupUPnP.html b/doc/html/classcMenuSetupUPnP.html deleted file mode 100644 index 50ef4e2..0000000 --- a/doc/html/classcMenuSetupUPnP.html +++ /dev/null @@ -1,151 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cMenuSetupUPnP Class Reference - - - - - -
-

cMenuSetupUPnP Class Reference

#include <menusetup.h> -

-

-Collaboration diagram for cMenuSetupUPnP:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - -

Public Member Functions

virtual eOSState ProcessKey (eKeys Key)

Protected Member Functions

virtual void Store (void)
void Update (void)
void Load (void)
-


Detailed Description

-The VDR setup page

-This class shows and manages the settings within the VDR setup OSD


Member Function Documentation

- -
-
- - - - - - - - - -
void cMenuSetupUPnP::Load (void   )  [protected]
-
-
- -

-Loads the setup information

-This loads the setup information from the configuration file -

-

- -

-
- - - - - - - - - -
eOSState cMenuSetupUPnP::ProcessKey (eKeys  Key  )  [virtual]
-
-
- -

-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

-

Returns:
The current state of the VDR
-
Parameters:
- - -
Key Key, pressed by the user
-
- -
-

- -

-
- - - - - - - - - -
void cMenuSetupUPnP::Store (void   )  [protected, virtual]
-
-
- -

-Stores the setup information

-This stores the setup information in the configuration file -

-

- -

-
- - - - - - - - - -
void cMenuSetupUPnP::Update (void   )  [protected]
-
-
- -

-Update the menu

-This updates the menu osd and refreshes the screen. -

-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.map b/doc/html/classcMenuSetupUPnP__coll__graph.map deleted file mode 100644 index 481048a..0000000 --- a/doc/html/classcMenuSetupUPnP__coll__graph.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.md5 b/doc/html/classcMenuSetupUPnP__coll__graph.md5 deleted file mode 100644 index 788ba5e..0000000 --- a/doc/html/classcMenuSetupUPnP__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -86da1f37bce9a0072b3f72537a687925 \ No newline at end of file diff --git a/doc/html/classcMenuSetupUPnP__coll__graph.png b/doc/html/classcMenuSetupUPnP__coll__graph.png deleted file mode 100644 index 0916cbe..0000000 Binary files a/doc/html/classcMenuSetupUPnP__coll__graph.png and /dev/null differ diff --git a/doc/html/classcPathParser-members.html b/doc/html/classcPathParser-members.html deleted file mode 100644 index b962603..0000000 --- a/doc/html/classcPathParser-members.html +++ /dev/null @@ -1,33 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cPathParser Member List

This is the complete list of members for cPathParser, including all inherited members.

- - -
parse(const char *Path, int *Section, int *Method, propertyMap *Properties)cPathParser [static]
~cPathParser() (defined in cPathParser)cPathParser [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcPathParser.html b/doc/html/classcPathParser.html deleted file mode 100644 index 73acf1d..0000000 --- a/doc/html/classcPathParser.html +++ /dev/null @@ -1,100 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cPathParser Class Reference - - - - - -
-

cPathParser Class Reference

#include <search.h> -

- -

-List of all members. - - - - -

Static Public Member Functions

static bool parse (const char *Path, int *Section, int *Method, propertyMap *Properties)
-


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


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool cPathParser::parse (const char *  Path,
int *  Section,
int *  Method,
propertyMap *  Properties 
) [static]
-
-
- -

-Parses the path

-This will parse the path and stores the result in the pointers given.

-

Returns:
returns
    -
  • true, if the parsing was successful
  • false, otherwise
-
-
Parameters:
- - - - - -
Path the path which is parsed
Section the number of the registered section
Method the number of the registered method
Properties the properties found in the path
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcPluginUpnp-members.html b/doc/html/classcPluginUpnp-members.html deleted file mode 100644 index 4f07613..0000000 --- a/doc/html/classcPluginUpnp-members.html +++ /dev/null @@ -1,44 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cPluginUpnp Member List

This is the complete list of members for cPluginUpnp, including all inherited members.

- - - - - - - - - - - - - -
Active(void)cPluginUpnp [virtual]
CommandLineHelp(void)cPluginUpnp [virtual]
cPluginUpnp(void) (defined in cPluginUpnp)cPluginUpnp
Description(void)cPluginUpnp [virtual]
getConfigDirectory()cPluginUpnp [static]
Initialize(void)cPluginUpnp [virtual]
ProcessArgs(int argc, char *argv[])cPluginUpnp [virtual]
SetupMenu(void)cPluginUpnp [virtual]
SetupParse(const char *Name, const char *Value)cPluginUpnp [virtual]
Start(void)cPluginUpnp [virtual]
Stop(void)cPluginUpnp [virtual]
Version(void)cPluginUpnp [virtual]
~cPluginUpnp() (defined in cPluginUpnp)cPluginUpnp [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcPluginUpnp.html b/doc/html/classcPluginUpnp.html deleted file mode 100644 index 9c73a1e..0000000 --- a/doc/html/classcPluginUpnp.html +++ /dev/null @@ -1,361 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cPluginUpnp Class Reference - - - - - -
-

cPluginUpnp Class Reference

#include <upnp.h> -

-

-Collaboration diagram for cPluginUpnp:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual const char * Version (void)
virtual const char * Description (void)
virtual const char * CommandLineHelp (void)
virtual bool ProcessArgs (int argc, char *argv[])
virtual bool Initialize (void)
virtual bool Start (void)
virtual void Stop (void)
virtual cString Active (void)
virtual cMenuSetupPage * SetupMenu (void)
virtual bool SetupParse (const char *Name, const char *Value)

Static Public Member Functions

static const char * getConfigDirectory ()
-


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.


Member Function Documentation

- -
-
- - - - - - - - - -
cString cPluginUpnp::Active (void   )  [virtual]
-
-
- -

-Message if still active

-This returns a message if the plugin is still active when a user attempts to shut down the VDR.

-

Returns:
the message shown on the screen.
- -
-

- -

-
- - - - - - - - - -
const char * cPluginUpnp::CommandLineHelp (void   )  [virtual]
-
-
- -

-Get the command line help

-This returns the command line help output, which comes, when the user types --help into the command line.

-

Returns:
the command line help
- -
-

- -

-
- - - - - - - - - -
const char * cPluginUpnp::Description (void   )  [virtual]
-
-
- -

-Get the description

-This returns a brief description of the plugin and what it does.

-

Returns:
the description of the plugin
- -
-

- -

-
- - - - - - - - -
const char * cPluginUpnp::getConfigDirectory (  )  [static]
-
-
- -

-Get the configuration directory

-This returns the directory, where configuration files are stored.

-

Returns:
the directory of the configuration files.
- -
-

- -

-
- - - - - - - - - -
bool cPluginUpnp::Initialize (void   )  [virtual]
-
-
- -

-Initializes the plugin

-This initializes any background activities of the plugin.

-

Returns:
returns
    -
  • true, if initializing was successful
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cPluginUpnp::ProcessArgs (int  argc,
char *  argv[] 
) [virtual]
-
-
- -

-Processes the commandline arguments

-This processes the commandline arguments which the user specified at the start of the plugin.

-

Returns:
returns
    -
  • true, if processing was successful
  • false, otherwise
-
-
Parameters:
- - - -
argc the number of arguments in the list
argv the arguments as a char array
-
- -
-

- -

-
- - - - - - - - - -
cMenuSetupPage * cPluginUpnp::SetupMenu (void   )  [virtual]
-
-
- -

-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

-

Returns:
the menu of the plugin
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cPluginUpnp::SetupParse (const char *  Name,
const char *  Value 
) [virtual]
-
-
- -

-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.

-

Returns:
returns
    -
  • true, if parsing was successful
  • false, otherwise
-
-
Parameters:
- - - -
Name the name of the variable
Value the according value of the variable
-
- -
-

- -

-
- - - - - - - - - -
bool cPluginUpnp::Start (void   )  [virtual]
-
-
- -

-Starts the plugin

-This starts the plugin. It starts additional threads, which are required by the plugin.

-

Returns:
returns
    -
  • true, if starting was successful
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
void cPluginUpnp::Stop (void   )  [virtual]
-
-
- -

-Stops the plugin

-This stops the plugin and all its components -

-

- -

-
- - - - - - - - - -
const char * cPluginUpnp::Version (void   )  [virtual]
-
-
- -

-Get the version of the plugin

-Returns the version string of the plugin

-

Returns:
a string representation of the plugin version
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcPluginUpnp__coll__graph.map b/doc/html/classcPluginUpnp__coll__graph.map deleted file mode 100644 index 481048a..0000000 --- a/doc/html/classcPluginUpnp__coll__graph.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/doc/html/classcPluginUpnp__coll__graph.md5 b/doc/html/classcPluginUpnp__coll__graph.md5 deleted file mode 100644 index 59ea805..0000000 --- a/doc/html/classcPluginUpnp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -168966d1b7d5b31ddf40a977ca9d5022 \ No newline at end of file diff --git a/doc/html/classcPluginUpnp__coll__graph.png b/doc/html/classcPluginUpnp__coll__graph.png deleted file mode 100644 index 38a4ccb..0000000 Binary files a/doc/html/classcPluginUpnp__coll__graph.png and /dev/null differ diff --git a/doc/html/classcRecordingPlayer-members.html b/doc/html/classcRecordingPlayer-members.html deleted file mode 100644 index 275b8f5..0000000 --- a/doc/html/classcRecordingPlayer-members.html +++ /dev/null @@ -1,39 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cRecordingPlayer Member List

This is the complete list of members for cRecordingPlayer, including all inherited members.

- - - - - - - - -
close()cRecordingPlayer [virtual]
newInstance(cRecording *Recording)cRecordingPlayer [static]
open(UpnpOpenFileMode mode)cRecordingPlayer [virtual]
read(char *buf, size_t buflen)cRecordingPlayer [virtual]
seek(off_t offset, int origin)cRecordingPlayer [virtual]
write(char *buf, size_t buflen)cRecordingPlayer [virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, private, virtual]
~cRecordingPlayer() (defined in cRecordingPlayer)cRecordingPlayer [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRecordingPlayer.html b/doc/html/classcRecordingPlayer.html deleted file mode 100644 index 7ad8f48..0000000 --- a/doc/html/classcRecordingPlayer.html +++ /dev/null @@ -1,284 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cRecordingPlayer Class Reference - - - - - -
-

cRecordingPlayer Class Reference

#include <recplayer.h> -

-

-Inheritance diagram for cRecordingPlayer:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cRecordingPlayer:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - -

Public Member Functions

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 ()

Static Public Member Functions

static cRecordingPlayernewInstance (cRecording *Recording)
-


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.


Member Function Documentation

- -
-
- - - - - - - - -
void cRecordingPlayer::close (  )  [virtual]
-
-
- -

-Closes the open file

-This will close open file handles and frees the memory obtained by it. -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - -
cRecordingPlayer * cRecordingPlayer::newInstance (cRecording *  Recording  )  [static]
-
-
- -

-Get a new instance of a recording player

-This returns a new instance of a recording player which plays the specified VDR recording.

-

Parameters:
- - -
Recording the recording to play
-
-
Returns:
the new instance of the recording player
- -
-

- -

-
- - - - - - - - - -
void cRecordingPlayer::open (UpnpOpenFileMode  mode  )  [virtual]
-
-
- -

-Opens the file

-Opens the file at the given mode. These can be:

    -
  • UPNP_READ, to read from the file
  • UPNP_WRITE, to write to the file
-

-

Parameters:
- - -
mode The file mode, i.e. one of the following
    -
  • UPNP_READ
  • UPNP_WRITE
-
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cRecordingPlayer::read (char *  buf,
size_t  buflen 
) [virtual]
-
-
- -

-Reads from the file

-Reads from the file a certain amount of bytes and stores them in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cRecordingPlayer::seek (off_t  offset,
int  whence 
) [virtual]
-
-
- -

-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

-

    -
  • SEEK_SET, the offset is relative to the beginning of the file
  • SEEK_CUR, it is relative to the current position or
  • SEEK_END, relative to the end of the file.
-

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
offset The byte offset in the file
whence one of the following
    -
  • SEEK_SET,
  • SEEK_CUR,
  • SEEK_END
-
-
- -

Implements cFileHandle.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cRecordingPlayer::write (char *  buf,
size_t  buflen 
) [virtual]
-
-
- -

-Writes to the file

-Writes to the file a certain amount of bytes which are stored in a buffer

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, when reading was successful
-
-
Parameters:
- - - -
buf The char buffer
buflen The size of the buffer
-
- -

Implements cFileHandle.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRecordingPlayer__coll__graph.map b/doc/html/classcRecordingPlayer__coll__graph.map deleted file mode 100644 index f121a83..0000000 --- a/doc/html/classcRecordingPlayer__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcRecordingPlayer__coll__graph.md5 b/doc/html/classcRecordingPlayer__coll__graph.md5 deleted file mode 100644 index 842bff3..0000000 --- a/doc/html/classcRecordingPlayer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -af4d8d362deafcbb24ed3149898030ab \ No newline at end of file diff --git a/doc/html/classcRecordingPlayer__coll__graph.png b/doc/html/classcRecordingPlayer__coll__graph.png deleted file mode 100644 index e1a336b..0000000 Binary files a/doc/html/classcRecordingPlayer__coll__graph.png and /dev/null differ diff --git a/doc/html/classcRecordingPlayer__inherit__graph.map b/doc/html/classcRecordingPlayer__inherit__graph.map deleted file mode 100644 index f121a83..0000000 --- a/doc/html/classcRecordingPlayer__inherit__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcRecordingPlayer__inherit__graph.md5 b/doc/html/classcRecordingPlayer__inherit__graph.md5 deleted file mode 100644 index 842bff3..0000000 --- a/doc/html/classcRecordingPlayer__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -af4d8d362deafcbb24ed3149898030ab \ No newline at end of file diff --git a/doc/html/classcRecordingPlayer__inherit__graph.png b/doc/html/classcRecordingPlayer__inherit__graph.png deleted file mode 100644 index e1a336b..0000000 Binary files a/doc/html/classcRecordingPlayer__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcRegisteredProfile-members.html b/doc/html/classcRegisteredProfile-members.html deleted file mode 100644 index 6255690..0000000 --- a/doc/html/classcRegisteredProfile-members.html +++ /dev/null @@ -1,34 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cRegisteredProfile Member List

This is the complete list of members for cRegisteredProfile, including all inherited members.

- - - -
cDlna (defined in cRegisteredProfile)cRegisteredProfile [friend]
cRegisteredProfile() (defined in cRegisteredProfile)cRegisteredProfile [inline]
~cRegisteredProfile() (defined in cRegisteredProfile)cRegisteredProfile [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRegisteredProfile.html b/doc/html/classcRegisteredProfile.html deleted file mode 100644 index cdb4a42..0000000 --- a/doc/html/classcRegisteredProfile.html +++ /dev/null @@ -1,52 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cRegisteredProfile Class Reference - - - - - -
-

cRegisteredProfile Class Reference

#include <dlna.h> -

-

-Collaboration diagram for cRegisteredProfile:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - -

Friends

-class cDlna
-


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: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRegisteredProfile__coll__graph.map b/doc/html/classcRegisteredProfile__coll__graph.map deleted file mode 100644 index 247321b..0000000 --- a/doc/html/classcRegisteredProfile__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcRegisteredProfile__coll__graph.md5 b/doc/html/classcRegisteredProfile__coll__graph.md5 deleted file mode 100644 index ad33e1e..0000000 --- a/doc/html/classcRegisteredProfile__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f19e75fe7c1b35c84918b713e3d41f04 \ No newline at end of file diff --git a/doc/html/classcRegisteredProfile__coll__graph.png b/doc/html/classcRegisteredProfile__coll__graph.png deleted file mode 100644 index 5fdf940..0000000 Binary files a/doc/html/classcRegisteredProfile__coll__graph.png and /dev/null differ diff --git a/doc/html/classcRow-members.html b/doc/html/classcRow-members.html deleted file mode 100644 index d2fe7af..0000000 --- a/doc/html/classcRow-members.html +++ /dev/null @@ -1,36 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cRow Member List

This is the complete list of members for cRow, including all inherited members.

- - - - - -
Count()cRow [inline]
cSQLiteDatabase (defined in cRow)cRow [friend]
fetchColumn(cString *Column, cString *Value)cRow
fetchColumn(char **Column, char **Value)cRow
~cRow() (defined in cRow)cRow [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRow.html b/doc/html/classcRow.html deleted file mode 100644 index d694c8f..0000000 --- a/doc/html/classcRow.html +++ /dev/null @@ -1,156 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cRow Class Reference - - - - - -
-

cRow Class Reference

#include <database.h> -

- -

-List of all members. - - - - - - - - - - - -

Public Member Functions

int Count ()
bool fetchColumn (cString *Column, cString *Value)
bool fetchColumn (char **Column, char **Value)

Friends

-class cSQLiteDatabase
-


Detailed Description

-Result row of a SQL SELECT request

-This is a single row of a {SQL SELECT} request.

-

See also:
cRows
-

Member Function Documentation

- -
-
- - - - - - - - -
int cRow::Count (  )  [inline]
-
-
- -

-Number of columns in this row

-

Returns:
the number of rows
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cRow::fetchColumn (char **  Column,
char **  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.

-

Returns:
returns
    -
  • true, if more columns to come
  • false, if the column is its last in this row.
-
-
Parameters:
- - - -
Column The name of the current column
Value The value of the current column
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cRow::fetchColumn (cString *  Column,
cString *  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.

-

Returns:
returns
    -
  • true, if more columns to come
  • false, if the column is its last in this row.
-
-
Parameters:
- - - -
Column The name of the current column
Value The value of the current value
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRows-members.html b/doc/html/classcRows-members.html deleted file mode 100644 index 683c1f9..0000000 --- a/doc/html/classcRows-members.html +++ /dev/null @@ -1,34 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cRows Member List

This is the complete list of members for cRows, including all inherited members.

- - - -
cSQLiteDatabase (defined in cRows)cRows [friend]
fetchRow(cRow **Row)cRows
~cRows() (defined in cRows)cRows [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRows.html b/doc/html/classcRows.html deleted file mode 100644 index 8889e36..0000000 --- a/doc/html/classcRows.html +++ /dev/null @@ -1,88 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cRows Class Reference - - - - - -
-

cRows Class Reference

#include <database.h> -

-

-Collaboration diagram for cRows:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - -

Public Member Functions

bool fetchRow (cRow **Row)

Friends

-class cSQLiteDatabase
-


Detailed Description

-Result rows of a SQL SELECT request

-Contains the rows of a SQL SELECT request

-

See also:
cRow
-

Member Function Documentation

- -
-
- - - - - - - - - -
bool cRows::fetchRow (cRow **  Row  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • true, if more rows to come
  • false, if the row is its last in this resultset.
-
-
Parameters:
- - -
Row The Pointer of the row
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcRows__coll__graph.map b/doc/html/classcRows__coll__graph.map deleted file mode 100644 index a9b91c3..0000000 --- a/doc/html/classcRows__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcRows__coll__graph.md5 b/doc/html/classcRows__coll__graph.md5 deleted file mode 100644 index 18bc382..0000000 --- a/doc/html/classcRows__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1cf1a38390704c0a5427826fafbd18c1 \ No newline at end of file diff --git a/doc/html/classcRows__coll__graph.png b/doc/html/classcRows__coll__graph.png deleted file mode 100644 index 67bc328..0000000 Binary files a/doc/html/classcRows__coll__graph.png and /dev/null differ diff --git a/doc/html/classcSQLiteDatabase-members.html b/doc/html/classcSQLiteDatabase-members.html deleted file mode 100644 index a7a7c7a..0000000 --- a/doc/html/classcSQLiteDatabase-members.html +++ /dev/null @@ -1,43 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cSQLiteDatabase Member List

This is the complete list of members for cSQLiteDatabase, including all inherited members.

- - - - - - - - - - - - -
commitTransaction()cSQLiteDatabase
cStatement (defined in cSQLiteDatabase)cSQLiteDatabase [friend]
execStatement(const char *Statement,...)cSQLiteDatabase
getInstance()cSQLiteDatabase [static]
getLastInsertRowID() const cSQLiteDatabase
getResultCount() const cSQLiteDatabase [inline]
getResultRows() const cSQLiteDatabase [inline]
rollbackTransaction()cSQLiteDatabase
setAutoCommit(bool Commit=true)cSQLiteDatabase [inline]
sprintf(const char *Format,...)cSQLiteDatabase [static]
startTransaction()cSQLiteDatabase
~cSQLiteDatabase() (defined in cSQLiteDatabase)cSQLiteDatabase [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcSQLiteDatabase.html b/doc/html/classcSQLiteDatabase.html deleted file mode 100644 index 9cc47b7..0000000 --- a/doc/html/classcSQLiteDatabase.html +++ /dev/null @@ -1,343 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cSQLiteDatabase Class Reference - - - - - -
-

cSQLiteDatabase Class Reference

#include <database.h> -

-

-Collaboration diagram for cSQLiteDatabase:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

int getResultCount () const
long getLastInsertRowID () const
cRowsgetResultRows () const
int execStatement (const char *Statement,...)
void startTransaction ()
void commitTransaction ()
void rollbackTransaction ()
void setAutoCommit (bool Commit=true)

Static Public Member Functions

static const char * sprintf (const char *Format,...)
static cSQLiteDatabasegetInstance ()

Friends

-class cStatement
-


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 cRows* will be created.


Member Function Documentation

- -
-
- - - - - - - - -
void cSQLiteDatabase::commitTransaction (  ) 
-
-
- -

-Commits a transaction

-This function commits the transaction and writes all changes to the database

-

See also:
cSQLiteDatabase::startTransaction
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cSQLiteDatabase::execStatement (const char *  Statement,
  ... 
)
-
-
- -

-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 cSQLiteDatabase::sprintf().

-

See also:
cSQLiteDatabase::sprintf().
-
Returns:
returns an integer representing
    -
  • -1, in case of an error
  • 0, when the statement was executed successfuly
-
-
Parameters:
- - -
Statement Statement to be executed
-
- -
-

- -

-
- - - - - - - - -
cSQLiteDatabase * cSQLiteDatabase::getInstance (  )  [static]
-
-
- -

-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.

-

Returns:
the database instance
- -
-

- -

-
- - - - - - - - -
long cSQLiteDatabase::getLastInsertRowID (  )  const
-
-
- -

-The last INSERT RowID

-Returns the primary key of the last inserted row. This will only work if there are no successive calls to the database.

-

Returns:
the last insert RowID
- -
-

- -

-
- - - - - - - - -
int cSQLiteDatabase::getResultCount (  )  const [inline]
-
-
- -

-Row count of the last result

-Returns the row count of the last {SQL SELECT} request.

-

See also:
cRows
-
Returns:
the result row count
- -
-

- -

-
- - - - - - - - -
cRows* cSQLiteDatabase::getResultRows (  )  const [inline]
-
-
- -

-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 also:
cRows
-
Returns:
the result rows of the last SELECT statement.
- -
-

- -

-
- - - - - - - - -
void cSQLiteDatabase::rollbackTransaction (  ) 
-
-
- -

-Performs a rollback on a transaction

-This function performs a rollback. No changes will be made to the database

-

See also:
cSQLiteDatabase::rollbackTransaction
- -
-

- -

-
- - - - - - - - - -
void cSQLiteDatabase::setAutoCommit (bool  Commit = true  )  [inline]
-
-
- -

-Set the commit behavior

-This function sets the auto commit behavior on new transactions with

See also:
cSQLiteDatabase::startTransaction.
-
    -
  • true, commits the last transaction before starting a new one
  • false, performs a rollback on the old transaction
-
Parameters:
- - -
Commit Switches the behavior of auto commit
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
const char * cSQLiteDatabase::sprintf (const char *  Format,
  ... 
) [static]
-
-
- -

-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 printf the following are allowed:

-

    -
  • q, like s, escapes single quotes in strings
  • Q, like q, surrounds the escaped string with additional single quotes
  • z, frees the string after reading and coping it
-

-

See also:
sprintf()
-
Returns:
the formated string
-
Parameters:
- - -
Format The format string
-
- -
-

- -

-
- - - - - - - - -
void cSQLiteDatabase::startTransaction (  ) 
-
-
- -

-Starts a transaction

-This starts a new transaction and commits or rolls back a previous.

-

See also:
cSQLiteDatabase::setAutoCommit

-cSQLiteDatabase::commitTransaction

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcSQLiteDatabase__coll__graph.map b/doc/html/classcSQLiteDatabase__coll__graph.map deleted file mode 100644 index 1b53573..0000000 --- a/doc/html/classcSQLiteDatabase__coll__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcSQLiteDatabase__coll__graph.md5 b/doc/html/classcSQLiteDatabase__coll__graph.md5 deleted file mode 100644 index 0d0e568..0000000 --- a/doc/html/classcSQLiteDatabase__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -98cb5eac67d715578190a62c6ef5a8cb \ No newline at end of file diff --git a/doc/html/classcSQLiteDatabase__coll__graph.png b/doc/html/classcSQLiteDatabase__coll__graph.png deleted file mode 100644 index 868045c..0000000 Binary files a/doc/html/classcSQLiteDatabase__coll__graph.png and /dev/null differ diff --git a/doc/html/classcSortCriteria-members.html b/doc/html/classcSortCriteria-members.html deleted file mode 100644 index 55a9e0d..0000000 --- a/doc/html/classcSortCriteria-members.html +++ /dev/null @@ -1,33 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cSortCriteria Member List

This is the complete list of members for cSortCriteria, including all inherited members.

- - -
parse(const char *Sort)cSortCriteria [static]
~cSortCriteria() (defined in cSortCriteria)cSortCriteria [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcSortCriteria.html b/doc/html/classcSortCriteria.html deleted file mode 100644 index 256d5b7..0000000 --- a/doc/html/classcSortCriteria.html +++ /dev/null @@ -1,82 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cSortCriteria Class Reference - - - - - -
-

cSortCriteria Class Reference

#include <search.h> -

-

-Collaboration diagram for cSortCriteria:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - -

Static Public Member Functions

static cList< cSortCrit > * parse (const char *Sort)
-


Detailed Description

-Creates a list with sort criteria

-This parser creates a list of sort criteria. It parses the sort criteria string from a Browse or Search request and stores the information in a cSortCrit structure.


Member Function Documentation

- -
-
- - - - - - - - - -
cList< cSortCrit > * cSortCriteria::parse (const char *  Sort  )  [static]
-
-
- -

-Parses the sort criteria

-This parses the sort criteria and returns a list with valid criterias

-

Returns:
returns
    -
  • a list with valid sort criterias
  • null, otherwise
-
-
Parameters:
- - -
Sort the string container the sort criteria
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcSortCriteria__coll__graph.map b/doc/html/classcSortCriteria__coll__graph.map deleted file mode 100644 index e587ffb..0000000 --- a/doc/html/classcSortCriteria__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcSortCriteria__coll__graph.md5 b/doc/html/classcSortCriteria__coll__graph.md5 deleted file mode 100644 index bf42df9..0000000 --- a/doc/html/classcSortCriteria__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3ffee57b055649112afb6e7559899f3e \ No newline at end of file diff --git a/doc/html/classcSortCriteria__coll__graph.png b/doc/html/classcSortCriteria__coll__graph.png deleted file mode 100644 index 064d4ea..0000000 Binary files a/doc/html/classcSortCriteria__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassContainer-members.html b/doc/html/classcUPnPClassContainer-members.html deleted file mode 100644 index 32fc629..0000000 --- a/doc/html/classcUPnPClassContainer-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassContainer Member List

This is the complete list of members for cUPnPClassContainer, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addCreateClass(cClass CreateClass)cUPnPClassContainer
addObject(cUPnPClassObject *Object)cUPnPClassContainer
addResource(cUPnPResource *Resource)cUPnPClassObject
addSearchClass(cClass SearchClass)cUPnPClassContainer
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassContainer [virtual]
cUPnPClassContainer()cUPnPClassContainer [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPContainerMediator (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
cUPnPObjectMediator (defined in cUPnPClassContainer)cUPnPClassContainer [friend]
delCreateClass(cClass CreateClass)cUPnPClassContainer
delSearchClass(cClass SearchClass)cUPnPClassContainer
getChildCount() const cUPnPClassContainer [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassContainer [inline, virtual]
getContainerType() const cUPnPClassContainer [inline]
getCreateClasses() const cUPnPClassContainer [inline]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getObject(cUPnPObjectID ID) const cUPnPClassContainer
getObjectList() const cUPnPClassContainer [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassContainer [virtual]
getPropertyList()cUPnPClassContainer [virtual]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getSearchClasses() const cUPnPClassContainer [inline]
getTitle() const cUPnPClassObject [inline]
getUpdateID() const cUPnPClassContainer [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
isSearchable() const cUPnPClassContainer [inline]
isUpdated()cUPnPClassContainer
mChildrencUPnPClassContainer [protected]
mChildrenIDcUPnPClassContainer [protected]
mClasscUPnPClassObject [protected]
mContainerTypecUPnPClassContainer [protected]
mCreateClassescUPnPClassContainer [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSearchablecUPnPClassContainer [protected]
mSearchClassescUPnPClassContainer [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mUpdateIDcUPnPClassContainer [protected]
mWriteStatuscUPnPClassObject [protected]
removeObject(cUPnPClassObject *Object)cUPnPClassContainer
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setContainerType(const char *Type)cUPnPClassContainer
setCreateClasses(std::vector< cClass > CreateClasses)cUPnPClassContainer
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassContainer [virtual]
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSearchable(bool Searchable)cUPnPClassContainer
setSearchClasses(std::vector< cClass > SearchClasses)cUPnPClassContainer
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setUpdateID(unsigned int UID)cUPnPClassContainer [protected]
setWriteStatus(int Status)cUPnPClassObject
update()cUPnPClassContainer [protected]
~cUPnPClassContainer() (defined in cUPnPClassContainer)cUPnPClassContainer [virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassContainer.html b/doc/html/classcUPnPClassContainer.html deleted file mode 100644 index fcf6438..0000000 --- a/doc/html/classcUPnPClassContainer.html +++ /dev/null @@ -1,897 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassContainer Class Reference - - - - - -
-

cUPnPClassContainer Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassContainer:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassContainer:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

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 cUPnPClassContainergetContainer ()
void addObject (cUPnPClassObject *Object)
void removeObject (cUPnPClassObject *Object)
cUPnPClassObjectgetObject (cUPnPObjectID ID) const
cUPnPObjectsgetObjectList () const
int addSearchClass (cClass SearchClass)
int delSearchClass (cClass SearchClass)
int addCreateClass (cClass CreateClass)
int delCreateClass (cClass CreateClass)
int setContainerType (const char *Type)
int setSearchClasses (std::vector< cClass > SearchClasses)
int setCreateClasses (std::vector< cClass > CreateClasses)
int setSearchable (bool Searchable)
const char * getContainerType () const
const std::vector< cClass > * getSearchClasses () const
const std::vector< cClass > * getCreateClasses () const
bool isSearchable () const
unsigned int getChildCount () const
unsigned int getUpdateID () const
bool isUpdated ()

Protected Member Functions

void update ()
int setUpdateID (unsigned int UID)
 cUPnPClassContainer ()

Protected Attributes

-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.
-cUPnPObjectsmChildren
 List of children.
-cHash< cUPnPClassObject > * mChildrenID
 List of children as hash map.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPContainerMediator
-


Detailed Description

-The UPnP class Container

-This is a UPnP class Container representation with all its properties.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPClassContainer::cUPnPClassContainer (  )  [protected]
-
-
- -

-Constructor of a container

-This creates a new instance of a container -

-

-


Member Function Documentation

- -
-
- - - - - - - - - -
int cUPnPClassContainer::addCreateClass (cClass  CreateClass  ) 
-
-
- -

-Add a create class

-This adds a create class to the create classes vector

-

Returns:
returns
    -
  • 0, if adding was successful
  • <0, otherwise
-
-
Parameters:
- - -
CreateClass the new class to be added
-
- -
-

- -

-
- - - - - - - - - -
void cUPnPClassContainer::addObject (cUPnPClassObject Object  ) 
-
-
- -

-Add a child

-This adds the specified child to this container. The parent container of the child will be set to this container.

-

Parameters:
- - -
Object the child to be added
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::addSearchClass (cClass  SearchClass  ) 
-
-
- -

-Add a search class

-This adds a search class to the search classes vector

-

Returns:
returns
    -
  • 0, if adding was successful
  • <0, otherwise
-
-
Parameters:
- - -
SearchClass the new class to be added
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
IXML_Node * cUPnPClassContainer::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [virtual]
-
-
- -

-Create the DIDL fragment

-This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

-

Returns:
the DIDL fragment of the object
-
Parameters:
- - - -
Document the IXML document where to write the contents
Filter the string list with the filter criteria
-
- -

Implements cUPnPClassObject.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::delCreateClass (cClass  CreateClass  ) 
-
-
- -

-Remove a create class

-This removes a create class from the create classes vector

-

Returns:
returns
    -
  • 0, if deleting was successful
  • <0, otherwise
-
-
Parameters:
- - -
CreateClass the class to be deleted
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::delSearchClass (cClass  SearchClass  ) 
-
-
- -

-Remove a search class

-This removes a search class from the search classes vector

-

Returns:
returns
    -
  • 0, if deleting was successful
  • <0, otherwise
-
-
Parameters:
- - -
SearchClass the class to be deleted
-
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPClassContainer::getChildCount (  )  const [inline]
-
-
- -

-Get the number of children

-This returns the total number of children of this container

-

Returns:
the number of childen
- -
-

- -

-
- - - - - - - - -
virtual cUPnPClassContainer* cUPnPClassContainer::getContainer (  )  [inline, virtual]
-
-
- -

-Converts to container

-This will convert the object into a container if it is one. If not, it returns NULL.

-

Returns:
returns
    -
  • NULL, if it is not a container
  • a container representation of this object
-
- -

Reimplemented from cUPnPClassObject.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassContainer::getContainerType (  )  const [inline]
-
-
- -

-Get the DLNA container type

-This returns the DLNA container type. Currently there are only these possible values beside NULL: TUNER_1_0

Returns:
the DLNA container type
- -
-

- -

-
- - - - - - - - -
const std::vector<cClass>* cUPnPClassContainer::getCreateClasses (  )  const [inline]
-
-
- -

-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.

-

Returns:
a vector with create classes
- -
-

- -

-
- - - - - - - - - -
cUPnPClassObject * cUPnPClassContainer::getObject (cUPnPObjectID  ID  )  const
-
-
- -

-Get a child by ID

-Returns the child, which is specified by the ObjectID.

-

Returns:
the child with the specified ID
-
Parameters:
- - -
ID the ObjectID of the child
-
- -
-

- -

-
- - - - - - - - -
cUPnPObjects* cUPnPClassContainer::getObjectList (  )  const [inline]
-
-
- -

-Get the list of children

-This returns a list of the children of the container.

-

Returns:
the list of children
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassContainer::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented from cUPnPClassObject.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassContainer::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented from cUPnPClassObject.

- -
-

- -

-
- - - - - - - - -
const std::vector<cClass>* cUPnPClassContainer::getSearchClasses (  )  const [inline]
-
-
- -

-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.

-

Returns:
a vector with all search classes
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPClassContainer::getUpdateID (  )  const [inline]
-
-
- -

-Get the containerUpdateID

-This returns the containerUpdateID

-

Returns:
the containerUpdateID of this container
- -
-

- -

-
- - - - - - - - -
bool cUPnPClassContainer::isSearchable (  )  const [inline]
-
-
- -

-Is this container searchable

-This returns true, if the container can be search via Search or false, otherwise.

-

Returns:
returns
    -
  • true, if the container is searchable
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - -
bool cUPnPClassContainer::isUpdated (  ) 
-
-
- -

-Has the container been updated?

-This returns true, if the container was recently updated or false, otherwise

-

Returns:
returns
    -
  • true, if the container was updated
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
void cUPnPClassContainer::removeObject (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.

-

Parameters:
- - -
Object the child to be removed
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::setContainerType (const char *  Type  ) 
-
-
- -

-Set the DLNA container type

-This sets the DLNA container type. It must be a valid container type value.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Type the DLNA container type
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::setCreateClasses (std::vector< cClass CreateClasses  ) 
-
-
- -

-Sets the create classes

-This sets the create classes, which allows the user to create new objects in this container, if restricted is false.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
CreateClasses a vector containing the create classes
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassContainer::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented from cUPnPClassObject.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::setSearchable (bool  Searchable  ) 
-
-
- -

-Sets the searchable flag

-This sets the searchable flag, which allows or disallows search on this container.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Searchable true, to enable or false, to disable searching
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::setSearchClasses (std::vector< cClass SearchClasses  ) 
-
-
- -

-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 derived is set, then also any derived classes are matched.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
SearchClasses a vector container the allowed search classes
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassContainer::setUpdateID (unsigned int  UID  )  [protected]
-
-
- -

-Sets the containerUpdateID

-This method should only be used when the containerUpdateID is loaded from the database.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
UID the containerUpdateID
-
- -
-

- -

-
- - - - - - - - -
void cUPnPClassContainer::update (  )  [protected]
-
-
- -

-Update the container

-This performs an update, which acutally increases the containerUpdateID. -

-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassContainer__coll__graph.map b/doc/html/classcUPnPClassContainer__coll__graph.map deleted file mode 100644 index 9a5a8e2..0000000 --- a/doc/html/classcUPnPClassContainer__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPClassContainer__coll__graph.md5 b/doc/html/classcUPnPClassContainer__coll__graph.md5 deleted file mode 100644 index b0507d9..0000000 --- a/doc/html/classcUPnPClassContainer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -76412caaf0c9aae0a342e69caf405715 \ No newline at end of file diff --git a/doc/html/classcUPnPClassContainer__coll__graph.png b/doc/html/classcUPnPClassContainer__coll__graph.png deleted file mode 100644 index a59bc9f..0000000 Binary files a/doc/html/classcUPnPClassContainer__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.map b/doc/html/classcUPnPClassContainer__inherit__graph.map deleted file mode 100644 index 203346d..0000000 --- a/doc/html/classcUPnPClassContainer__inherit__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.md5 b/doc/html/classcUPnPClassContainer__inherit__graph.md5 deleted file mode 100644 index dec8024..0000000 --- a/doc/html/classcUPnPClassContainer__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -947c17fc6b8d8a26f93461980dd032aa \ No newline at end of file diff --git a/doc/html/classcUPnPClassContainer__inherit__graph.png b/doc/html/classcUPnPClassContainer__inherit__graph.png deleted file mode 100644 index 4ffc73a..0000000 Binary files a/doc/html/classcUPnPClassContainer__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassItem-members.html b/doc/html/classcUPnPClassItem-members.html deleted file mode 100644 index c04a81e..0000000 --- a/doc/html/classcUPnPClassItem-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassItem Member List

This is the complete list of members for cUPnPClassItem, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassItem)cUPnPClassItem [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPItemMediator (defined in cUPnPClassItem)cUPnPClassItem [friend]
cUPnPObjectMediator (defined in cUPnPClassItem)cUPnPClassItem [friend]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassItem [virtual]
getPropertyList()cUPnPClassItem [virtual]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mReferencecUPnPClassItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassItem [virtual]
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassItem.html b/doc/html/classcUPnPClassItem.html deleted file mode 100644 index 627195b..0000000 --- a/doc/html/classcUPnPClassItem.html +++ /dev/null @@ -1,337 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassItem Class Reference - - - - - -
-

cUPnPClassItem Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassItem:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassItem:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

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
int setReference (cUPnPClassItem *Reference)
cUPnPClassItemgetReference () const
cUPnPObjectID getReferenceID () const

Protected Member Functions

 cUPnPClassItem ()

Protected Attributes

-cUPnPClassItemmReference
 The reference item.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPItemMediator
-


Detailed Description

-The UPnP class Item

-This is a UPnP class Item representation with all its properties.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPClassItem::cUPnPClassItem (  )  [protected]
-
-
- -

-Constructor of an item

-This creates a new instance of an item -

-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
IXML_Node * cUPnPClassItem::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [virtual]
-
-
- -

-Create the DIDL fragment

-This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

-

Returns:
the DIDL fragment of the object
-
Parameters:
- - - -
Document the IXML document where to write the contents
Filter the string list with the filter criteria
-
- -

Implements cUPnPClassObject.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassItem::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented from cUPnPClassObject.

- -

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassItem::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented from cUPnPClassObject.

- -

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - -
cUPnPClassItem* cUPnPClassItem::getReference (  )  const [inline]
-
-
- -

-Get the referenced item

-This returns the referenced item of this item

-

Returns:
the referenced item
- -
-

- -

-
- - - - - - - - -
cUPnPObjectID cUPnPClassItem::getReferenceID (  )  const [inline]
-
-
- -

-Get the reference ID

-This returns the object ID of the referenced item or -1, if no reference exists.

-

Returns:
the reference ID
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassItem::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented from cUPnPClassObject.

- -

Reimplemented in cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassItem::setReference (cUPnPClassItem Reference  ) 
-
-
- -

-Set a reference item

-This sets a reference item. Its comparable with symlinks in *nix systems

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Reference the reference item
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassItem__coll__graph.map b/doc/html/classcUPnPClassItem__coll__graph.map deleted file mode 100644 index 6296160..0000000 --- a/doc/html/classcUPnPClassItem__coll__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcUPnPClassItem__coll__graph.md5 b/doc/html/classcUPnPClassItem__coll__graph.md5 deleted file mode 100644 index 4953420..0000000 --- a/doc/html/classcUPnPClassItem__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e5c64516c88a739deb74dafe8c8ecfa7 \ No newline at end of file diff --git a/doc/html/classcUPnPClassItem__coll__graph.png b/doc/html/classcUPnPClassItem__coll__graph.png deleted file mode 100644 index 807445f..0000000 Binary files a/doc/html/classcUPnPClassItem__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassItem__inherit__graph.map b/doc/html/classcUPnPClassItem__inherit__graph.map deleted file mode 100644 index 9c1d5d2..0000000 --- a/doc/html/classcUPnPClassItem__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPClassItem__inherit__graph.md5 b/doc/html/classcUPnPClassItem__inherit__graph.md5 deleted file mode 100644 index ee589aa..0000000 --- a/doc/html/classcUPnPClassItem__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -559a4c89484927ec5f3504a69e6cb8fd \ No newline at end of file diff --git a/doc/html/classcUPnPClassItem__inherit__graph.png b/doc/html/classcUPnPClassItem__inherit__graph.png deleted file mode 100644 index 0996b14..0000000 Binary files a/doc/html/classcUPnPClassItem__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassMovie-members.html b/doc/html/classcUPnPClassMovie-members.html deleted file mode 100644 index 09091b2..0000000 --- a/doc/html/classcUPnPClassMovie-members.html +++ /dev/null @@ -1,126 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassMovie Member List

This is the complete list of members for cUPnPClassMovie, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassMovie()cUPnPClassMovie [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPMovieMediator (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
cUPnPObjectMediator (defined in cUPnPClassMovie)cUPnPClassMovie [friend]
getActors() const cUPnPClassVideoItem [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getDVDRegionCode() const cUPnPClassMovie [inline]
getGenre() const cUPnPClassVideoItem [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassMovie [virtual]
getPropertyList()cUPnPClassMovie [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getStorageMedium() const cUPnPClassMovie [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mDVDRegionCodecUPnPClassMovie [protected]
mGenrecUPnPClassVideoItem [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mStorageMediumcUPnPClassMovie [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setDVDRegionCode(int RegionCode)cUPnPClassMovie
setGenre(const char *Genre)cUPnPClassVideoItem
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassMovie [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setStorageMedium(const char *StorageMedium)cUPnPClassMovie
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassMovie() (defined in cUPnPClassMovie)cUPnPClassMovie [virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassMovie.html b/doc/html/classcUPnPClassMovie.html deleted file mode 100644 index 2116ad3..0000000 --- a/doc/html/classcUPnPClassMovie.html +++ /dev/null @@ -1,331 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassMovie Class Reference - - - - - -
-

cUPnPClassMovie Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassMovie:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassMovie:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setDVDRegionCode (int RegionCode)
int setStorageMedium (const char *StorageMedium)
int getDVDRegionCode () const
const char * getStorageMedium () const

Protected Member Functions

 cUPnPClassMovie ()

Protected Attributes

-int mDVDRegionCode
 The Region code of the movie (0 - 8).
-cString mStorageMedium
 The storage medium where the movie is stored.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPMovieMediator
-


Detailed Description

-The UPnP class Movie

-This is a UPnP class Movie representation with all its properties.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPClassMovie::cUPnPClassMovie (  )  [protected]
-
-
- -

-Constructor of a movie

-This creates a new instance of a movie -

-

-


Member Function Documentation

- -
-
- - - - - - - - -
int cUPnPClassMovie::getDVDRegionCode (  )  const [inline]
-
-
- -

-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 ALL is 9.

-

See also:
http://en.wikipedia.org/wiki/DVD_region_code
-
Returns:
the DVD region code
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassMovie::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassMovie::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassMovie::getStorageMedium (  )  const [inline]
-
-
- -

-Get the storage medium

-This returns the storage medium, where the movie resides.

-

Returns:
the storage medium
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassMovie::setDVDRegionCode (int  RegionCode  ) 
-
-
- -

-Sets the DVD region code

-For more information on this, see http://en.wikipedia.org/wiki/DVD_region_code

-The integer representation for ALL is 9.

-

See also:
http://en.wikipedia.org/wiki/DVD_region_code
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
RegionCode the region code of this movie
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassMovie::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassMovie::setStorageMedium (const char *  StorageMedium  ) 
-
-
- -

-Sets the storage medium

-This will set the storage medium, where the movie resides. Valid media are defined in common.h

-

See also:
common.h
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
StorageMedium the medium where the movie is located
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassMovie__coll__graph.map b/doc/html/classcUPnPClassMovie__coll__graph.map deleted file mode 100644 index 6a4167c..0000000 --- a/doc/html/classcUPnPClassMovie__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPClassMovie__coll__graph.md5 b/doc/html/classcUPnPClassMovie__coll__graph.md5 deleted file mode 100644 index ea6c4cd..0000000 --- a/doc/html/classcUPnPClassMovie__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -273770f12108bb08fe7dd391c0968d14 \ No newline at end of file diff --git a/doc/html/classcUPnPClassMovie__coll__graph.png b/doc/html/classcUPnPClassMovie__coll__graph.png deleted file mode 100644 index a0d9f10..0000000 Binary files a/doc/html/classcUPnPClassMovie__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.map b/doc/html/classcUPnPClassMovie__inherit__graph.map deleted file mode 100644 index 3b8e374..0000000 --- a/doc/html/classcUPnPClassMovie__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.md5 b/doc/html/classcUPnPClassMovie__inherit__graph.md5 deleted file mode 100644 index 00c542c..0000000 --- a/doc/html/classcUPnPClassMovie__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -18a860ea33e96feef30bb73f113249f0 \ No newline at end of file diff --git a/doc/html/classcUPnPClassMovie__inherit__graph.png b/doc/html/classcUPnPClassMovie__inherit__graph.png deleted file mode 100644 index 3c598e0..0000000 Binary files a/doc/html/classcUPnPClassMovie__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassObject-members.html b/doc/html/classcUPnPClassObject-members.html deleted file mode 100644 index 1a13191..0000000 --- a/doc/html/classcUPnPClassObject-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassObject Member List

This is the complete list of members for cUPnPClassObject, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassObject)cUPnPClassObject [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)=0cUPnPClassObject [pure virtual]
cUPnPClassContainer (defined in cUPnPClassObject)cUPnPClassObject [friend]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPObjectMediator (defined in cUPnPClassObject)cUPnPClassObject [friend]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getID() const cUPnPClassObject [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProperty(const char *Property, char **Value) const cUPnPClassObject [virtual]
getPropertyList()cUPnPClassObject [virtual]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDIDLFragmentcUPnPClassObject [protected]
mIDcUPnPClassObject [protected]
mLastModifiedcUPnPClassObject [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProperty(const char *Property, const char *Value)cUPnPClassObject [virtual]
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassObject.html b/doc/html/classcUPnPClassObject.html deleted file mode 100644 index ef53cd9..0000000 --- a/doc/html/classcUPnPClassObject.html +++ /dev/null @@ -1,1039 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassObject Class Reference - - - - - -
-

cUPnPClassObject Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassObject:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassObject:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

time_t modified () const
virtual int Compare (const cListObject &ListObject) const
virtual cStringList * getPropertyList ()
virtual bool getProperty (const char *Property, char **Value) const
virtual bool setProperty (const char *Property, const char *Value)
virtual cUPnPClassContainergetContainer ()
virtual IXML_Node * createDIDLFragment (IXML_Document *Document, cStringList *Filter)=0
bool isContainer ()
void setSortCriteria (const char *Property, bool Descending=false)
void clearSortCriteria ()
int setTitle (const char *Title)
int setCreator (const char *Creator)
int setRestricted (bool Restricted)
int setWriteStatus (int Status)
int setResources (cList< cUPnPResource > *Resources)
int addResource (cUPnPResource *Resource)
int removeResource (cUPnPResource *Resource)
cUPnPObjectID getID () const
cUPnPObjectID getParentID () const
cUPnPClassContainergetParent () const
const char * getTitle () const
const char * getClass () const
const char * getCreator () const
bool isRestricted () const
int getWriteStatus () const
cUPnPResourcegetResource (unsigned int ResourceID) const
cList< cUPnPResource > * getResources () const

Protected Member Functions

int setID (cUPnPObjectID ID)
int setParent (cUPnPClassContainer *Parent)
int setClass (const char *Class)
void setModified (void)

Protected Attributes

-time_t mLastModified
 The last modification of this property.
-cUPnPObjectID mID
 The object ID.
-cUPnPClassObjectmParent
 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.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPClassContainer
-


Detailed Description

-The UPnP class Object

-This is a UPnP class Object representation with all its properties.


Member Function Documentation

- -
-
- - - - - - - - - -
int cUPnPClassObject::addResource (cUPnPResource Resource  ) 
-
-
- -

-Add resource to list

-This adds the specified resource to the resource list of the object

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Resource the resource to be added
-
- -
-

- -

-
- - - - - - - - -
void cUPnPClassObject::clearSortCriteria (  ) 
-
-
- -

-Clears the sort criteria

-Clears the property of the sort criteria and sets the descending flag to false. -

-

- -

-
- - - - - - - - - -
int cUPnPClassObject::Compare (const cListObject &  ListObject  )  const [virtual]
-
-
- -

-Compares a object

-This compares a given object with this object It uses the SortCriteria to compare them.

-

Returns:
returns
    -
  • >0, if the object comes after this one
  • 0, if the objects have the same property
  • <0, if the object comes before this one
-
-
Parameters:
- - -
ListObject the object to compare with
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
virtual IXML_Node* cUPnPClassObject::createDIDLFragment (IXML_Document *  Document,
cStringList *  Filter 
) [pure virtual]
-
-
- -

-Create the DIDL fragment

-This creates the DIDL-Lite fragment of the object. The DIDL is written to the specified IXML document. The details of the output can be controlled via the filter stringlist

-

Returns:
the DIDL fragment of the object
-
Parameters:
- - - -
Document the IXML document where to write the contents
Filter the string list with the filter criteria
-
- -

Implemented in cUPnPClassItem, and cUPnPClassContainer.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassObject::getClass (  )  const [inline]
-
-
- -

-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.

-

Returns:
the class of the object
- -
-

- -

-
- - - - - - - - -
virtual cUPnPClassContainer* cUPnPClassObject::getContainer (  )  [inline, virtual]
-
-
- -

-Converts to container

-This will convert the object into a container if it is one. If not, it returns NULL.

-

Returns:
returns
    -
  • NULL, if it is not a container
  • a container representation of this object
-
- -

Reimplemented in cUPnPClassContainer.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassObject::getCreator (  )  const [inline]
-
-
- -

-Get the creator

-This returns the creator of the object. Usually, this is the primary content creator or the owner of the object

-

Returns:
the creator of the object
- -
-

- -

-
- - - - - - - - -
cUPnPObjectID cUPnPClassObject::getID (  )  const [inline]
-
-
- -

-Get the object ID

-This returns the object ID of the object.

-

Returns:
the object ID
- -
-

- -

-
- - - - - - - - -
cUPnPClassContainer* cUPnPClassObject::getParent (  )  const [inline]
-
-
- -

-Get the parent object

-This returns the parent container object, associated with this object. It is NULL, if the object is the root object.

-

Returns:
the parent object
- -
-

- -

-
- - - - - - - - -
cUPnPObjectID cUPnPClassObject::getParentID (  )  const [inline]
-
-
- -

-Get the parent ID

-This returns the ID of the parent container object, associated with this object. It is -1, if the object is the root object.

-

Returns:
the parent ID
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassObject::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassObject::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - - -
cUPnPResource* cUPnPClassObject::getResource (unsigned int  ResourceID  )  const [inline]
-
-
- -

-Get a resource by its ID

-Returns the resource with the specified resource ID.

-

Returns:
the resource by ID
-
Parameters:
- - -
ResourceID the resource ID of the demanded resource
-
- -
-

- -

-
- - - - - - - - -
cList<cUPnPResource>* cUPnPClassObject::getResources (  )  const [inline]
-
-
- -

-Get the resources

-This returns a list with resources associated with this object.

-

Returns:
the resources of this object
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassObject::getTitle (  )  const [inline]
-
-
- -

-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.

-

Returns:
the title of the object
- -
-

- -

-
- - - - - - - - -
int cUPnPClassObject::getWriteStatus (  )  const [inline]
-
-
- -

-Get write status

-This returns the write status of the object. It gives information, if the resource is modifiable.

-

Returns:
the write status
- -
-

- -

-
- - - - - - - - -
bool cUPnPClassObject::isContainer (  )  [inline]
-
-
- -

-Is this a container?

-Returns if this object is a container or not

-

Returns:
returns
    -
  • true, if it is a container
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - -
bool cUPnPClassObject::isRestricted (  )  const [inline]
-
-
- -

-Is the resource restricted?

-Returns true, if the object is restricted or false, otherwise. When the object is restricted, then modifications to the metadata of the object are disallowed.

-

Returns:
returns
    -
  • true, if the object is restricted
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - -
time_t cUPnPClassObject::modified (  )  const [inline]
-
-
- -

-Last modified

-Returns when the object was modified the last time.

-

Returns:
last modification timestamp
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::removeResource (cUPnPResource Resource  ) 
-
-
- -

-Remove resource from list

-This removes the specified resource from the resource list of the object

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Resource the resource to be removed
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setClass (const char *  Class  )  [protected]
-
-
- -

-Set the object class

-This is only allowed by mediators and the media database. Manually editing the object class may result in unpredictable behavior.

-

Parameters:
- - -
Class the class of this object
-
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setCreator (const char *  Creator  ) 
-
-
- -

-Set the creator

-The creator of an object is primarily the creator or owner of the object

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Creator the creator of the object
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setID (cUPnPObjectID  ID  )  [protected]
-
-
- -

-Set the Object ID

-This is only allowed by mediators and the media database. Manually editing the object ID may result in unpredictable behavior.

-

Parameters:
- - -
ID the ObjectID of this object
-
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - - -
void cUPnPClassObject::setModified (void   )  [inline, protected]
-
-
- -

-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. -

-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setParent (cUPnPClassContainer Parent  )  [protected]
-
-
- -

-Set the Parent Object

-This is only allowed by mediators and the media database. Manually editing the parent may result in unpredictable behavior.

-

Parameters:
- - -
Parent the parent of this object
-
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassObject::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented in cUPnPClassItem, cUPnPClassContainer, cUPnPClassVideoItem, cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setResources (cList< cUPnPResource > *  Resources  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Resources the resource list of this object
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setRestricted (bool  Restricted  ) 
-
-
- -

-Set the restriction

-This sets the restriction flag. If the object is restricted, no modifications to its metadata by the user are allowed.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Restricted true, to disallow modification, false to allow it
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cUPnPClassObject::setSortCriteria (const char *  Property,
bool  Descending = false 
)
-
-
- -

-Set the sort criteria

-This sets a certain criteria which the object can be compared with.

-

Parameters:
- - - -
Property the property to sort after
Descending sort the objects in descending order
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setTitle (const char *  Title  ) 
-
-
- -

-Set the title

-This sets the title of the object. It is a required metadata information. It must not be NULL or an empty string.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Title the title of the object
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassObject::setWriteStatus (int  Status  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Status the write status
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassObject__coll__graph.map b/doc/html/classcUPnPClassObject__coll__graph.map deleted file mode 100644 index a09fd35..0000000 --- a/doc/html/classcUPnPClassObject__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcUPnPClassObject__coll__graph.md5 b/doc/html/classcUPnPClassObject__coll__graph.md5 deleted file mode 100644 index de7083f..0000000 --- a/doc/html/classcUPnPClassObject__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a39d7ab6ef69ff2c48df588fc7cd5d6c \ No newline at end of file diff --git a/doc/html/classcUPnPClassObject__coll__graph.png b/doc/html/classcUPnPClassObject__coll__graph.png deleted file mode 100644 index 5f1a913..0000000 Binary files a/doc/html/classcUPnPClassObject__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassObject__inherit__graph.map b/doc/html/classcUPnPClassObject__inherit__graph.map deleted file mode 100644 index 6887c87..0000000 --- a/doc/html/classcUPnPClassObject__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/doc/html/classcUPnPClassObject__inherit__graph.md5 b/doc/html/classcUPnPClassObject__inherit__graph.md5 deleted file mode 100644 index ab54cf6..0000000 --- a/doc/html/classcUPnPClassObject__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4b8dd48df259f0ea0d22fafd668610b0 \ No newline at end of file diff --git a/doc/html/classcUPnPClassObject__inherit__graph.png b/doc/html/classcUPnPClassObject__inherit__graph.png deleted file mode 100644 index e9e27e1..0000000 Binary files a/doc/html/classcUPnPClassObject__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassVideoBroadcast-members.html b/doc/html/classcUPnPClassVideoBroadcast-members.html deleted file mode 100644 index 9d41cff..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast-members.html +++ /dev/null @@ -1,132 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassVideoBroadcast Member List

This is the complete list of members for cUPnPClassVideoBroadcast, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoBroadcast()cUPnPClassVideoBroadcast [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPObjectMediator (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
cUPnPVideoBroadcastMediator (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [friend]
getActors() const cUPnPClassVideoItem [inline]
getChannelName() const cUPnPClassVideoBroadcast [inline]
getChannelNr() const cUPnPClassVideoBroadcast [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getGenre() const cUPnPClassVideoItem [inline]
getIcon() const cUPnPClassVideoBroadcast [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassVideoBroadcast [virtual]
getPropertyList()cUPnPClassVideoBroadcast [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRegion() const cUPnPClassVideoBroadcast [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mChannelNamecUPnPClassVideoBroadcast [protected]
mChannelNrcUPnPClassVideoBroadcast [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mGenrecUPnPClassVideoItem [protected]
mIconcUPnPClassVideoBroadcast [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRegioncUPnPClassVideoBroadcast [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setChannelName(const char *ChannelName)cUPnPClassVideoBroadcast
setChannelNr(int ChannelNr)cUPnPClassVideoBroadcast
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setGenre(const char *Genre)cUPnPClassVideoItem
setIcon(const char *IconURI)cUPnPClassVideoBroadcast
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassVideoBroadcast [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRegion(const char *Region)cUPnPClassVideoBroadcast
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoBroadcast() (defined in cUPnPClassVideoBroadcast)cUPnPClassVideoBroadcast [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassVideoBroadcast.html b/doc/html/classcUPnPClassVideoBroadcast.html deleted file mode 100644 index a6d0f23..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast.html +++ /dev/null @@ -1,446 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassVideoBroadcast Class Reference - - - - - -
-

cUPnPClassVideoBroadcast Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassVideoBroadcast:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassVideoBroadcast:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setIcon (const char *IconURI)
int setRegion (const char *Region)
int setChannelNr (int ChannelNr)
int setChannelName (const char *ChannelName)
const char * getIcon () const
const char * getRegion () const
int getChannelNr () const
const char * getChannelName () const

Protected Member Functions

 cUPnPClassVideoBroadcast ()

Protected Attributes

-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.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPVideoBroadcastMediator
-


Detailed Description

-The UPnP class VideoBroadcast

-This is a UPnP class VideoBroadcast representation with all its properties.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast (  )  [protected]
-
-
- -

-Constructor of a video broadcast

-This creates a new instance of a video broadcast -

-

-


Member Function Documentation

- -
-
- - - - - - - - -
const char* cUPnPClassVideoBroadcast::getChannelName (  )  const [inline]
-
-
- -

-Get the channel name

-This returns the channel name or provider name respectively

-

Returns:
the channel name
- -
-

- -

-
- - - - - - - - -
int cUPnPClassVideoBroadcast::getChannelNr (  )  const [inline]
-
-
- -

-Get the channel number

-This returns the channel number

-

Returns:
the channel number
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoBroadcast::getIcon (  )  const [inline]
-
-
- -

-Get the channel icon

-This returns the channel icon of the channel.

-

Returns:
the channel icon
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassVideoBroadcast::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassVideoBroadcast::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoBroadcast::getRegion (  )  const [inline]
-
-
- -

-Get the region

-This returns the region, where the channel can be received

-

Returns:
the channel region
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoBroadcast::setChannelName (const char *  ChannelName  ) 
-
-
- -

-Set the channel name

-This sets the channel name or the provider of the channel.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
ChannelName the channel name
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoBroadcast::setChannelNr (int  ChannelNr  ) 
-
-
- -

-Set channel number

-This sets the channel number, so that it can be used for directly navigation or channel up and down navigation respectively.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
ChannelNr the channel number
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoBroadcast::setIcon (const char *  IconURI  ) 
-
-
- -

-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

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
IconURI the URI to the icon file
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassVideoBroadcast::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented from cUPnPClassVideoItem.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoBroadcast::setRegion (const char *  Region  ) 
-
-
- -

-Set the channel region

-This sets the region of a channel, where it can be received

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Region the location where the channel can be received
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map deleted file mode 100644 index ba4b3a6..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 deleted file mode 100644 index 8a18a37..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4d0ff38fbfd93d438984eafa83a9686c \ No newline at end of file diff --git a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png b/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png deleted file mode 100644 index 5547754..0000000 Binary files a/doc/html/classcUPnPClassVideoBroadcast__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map deleted file mode 100644 index 1b72bbe..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 deleted file mode 100644 index b292bb6..0000000 --- a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83c71ce7b232a40d24b99e99024532d4 \ No newline at end of file diff --git a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png b/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png deleted file mode 100644 index 01ff64f..0000000 Binary files a/doc/html/classcUPnPClassVideoBroadcast__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassVideoItem-members.html b/doc/html/classcUPnPClassVideoItem-members.html deleted file mode 100644 index 33adef9..0000000 --- a/doc/html/classcUPnPClassVideoItem-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPClassVideoItem Member List

This is the complete list of members for cUPnPClassVideoItem, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
addResource(cUPnPResource *Resource)cUPnPClassObject
clearSortCriteria()cUPnPClassObject
cMediaDatabase (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
Compare(const cListObject &ListObject) const cUPnPClassObject [virtual]
createDIDLFragment(IXML_Document *Document, cStringList *Filter)cUPnPClassItem [virtual]
cUPnPClassItem()cUPnPClassItem [protected]
cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [protected]
cUPnPClassVideoItem()cUPnPClassVideoItem [protected]
cUPnPObjectMediator (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
cUPnPVideoItemMediator (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [friend]
getActors() const cUPnPClassVideoItem [inline]
getClass() const cUPnPClassObject [inline]
getContainer()cUPnPClassObject [inline, virtual]
getCreator() const cUPnPClassObject [inline]
getDescription() const cUPnPClassVideoItem [inline]
getDirectors() const cUPnPClassVideoItem [inline]
getGenre() const cUPnPClassVideoItem [inline]
getID() const cUPnPClassObject [inline]
getLanguage() const cUPnPClassVideoItem [inline]
getLongDescription() const cUPnPClassVideoItem [inline]
getParent() const cUPnPClassObject [inline]
getParentID() const cUPnPClassObject [inline]
getProducers() const cUPnPClassVideoItem [inline]
getProperty(const char *Property, char **Value) const cUPnPClassVideoItem [virtual]
getPropertyList()cUPnPClassVideoItem [virtual]
getPublishers() const cUPnPClassVideoItem [inline]
getRating() const cUPnPClassVideoItem [inline]
getReference() const cUPnPClassItem [inline]
getReferenceID() const cUPnPClassItem [inline]
getRelations() const cUPnPClassVideoItem [inline]
getResource(unsigned int ResourceID) const cUPnPClassObject [inline]
getResources() const cUPnPClassObject [inline]
getTitle() const cUPnPClassObject [inline]
getWriteStatus() const cUPnPClassObject [inline]
isContainer()cUPnPClassObject [inline]
isRestricted() const cUPnPClassObject [inline]
mActorscUPnPClassVideoItem [protected]
mClasscUPnPClassObject [protected]
mCreatorcUPnPClassObject [protected]
mDescriptioncUPnPClassVideoItem [protected]
mDIDLFragmentcUPnPClassObject [protected]
mDirectorscUPnPClassVideoItem [protected]
mGenrecUPnPClassVideoItem [protected]
mIDcUPnPClassObject [protected]
mLanguagecUPnPClassVideoItem [protected]
mLastModifiedcUPnPClassObject [protected]
mLongDescriptioncUPnPClassVideoItem [protected]
modified() const cUPnPClassObject [inline]
mParentcUPnPClassObject [protected]
mProducerscUPnPClassVideoItem [protected]
mPublisherscUPnPClassVideoItem [protected]
mRatingcUPnPClassVideoItem [protected]
mReferencecUPnPClassItem [protected]
mRelationscUPnPClassVideoItem [protected]
mResourcescUPnPClassObject [protected]
mResourcesIDcUPnPClassObject [protected]
mRestrictedcUPnPClassObject [protected]
mSortCriteriacUPnPClassObject [protected]
mSortDescendingcUPnPClassObject [protected]
mTitlecUPnPClassObject [protected]
mWriteStatuscUPnPClassObject [protected]
removeResource(cUPnPResource *Resource)cUPnPClassObject
setActors(const char *Actors)cUPnPClassVideoItem
setClass(const char *Class)cUPnPClassObject [protected]
setCreator(const char *Creator)cUPnPClassObject
setDescription(const char *Description)cUPnPClassVideoItem
setDirectors(const char *Directors)cUPnPClassVideoItem
setGenre(const char *Genre)cUPnPClassVideoItem
setID(cUPnPObjectID ID)cUPnPClassObject [protected]
setLanguage(const char *Language)cUPnPClassVideoItem
setLongDescription(const char *LongDescription)cUPnPClassVideoItem
setModified(void)cUPnPClassObject [inline, protected]
setParent(cUPnPClassContainer *Parent)cUPnPClassObject [protected]
setProducers(const char *Producers)cUPnPClassVideoItem
setProperty(const char *Property, const char *Value)cUPnPClassVideoItem [virtual]
setPublishers(const char *Publishers)cUPnPClassVideoItem
setRating(const char *Rating)cUPnPClassVideoItem
setReference(cUPnPClassItem *Reference)cUPnPClassItem
setRelations(const char *Relations)cUPnPClassVideoItem
setResources(cList< cUPnPResource > *Resources)cUPnPClassObject
setRestricted(bool Restricted)cUPnPClassObject
setSortCriteria(const char *Property, bool Descending=false)cUPnPClassObject
setTitle(const char *Title)cUPnPClassObject
setWriteStatus(int Status)cUPnPClassObject
~cUPnPClassItem() (defined in cUPnPClassItem)cUPnPClassItem [inline, virtual]
~cUPnPClassObject() (defined in cUPnPClassObject)cUPnPClassObject [virtual]
~cUPnPClassVideoItem() (defined in cUPnPClassVideoItem)cUPnPClassVideoItem [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassVideoItem.html b/doc/html/classcUPnPClassVideoItem.html deleted file mode 100644 index d28e75e..0000000 --- a/doc/html/classcUPnPClassVideoItem.html +++ /dev/null @@ -1,815 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPClassVideoItem Class Reference - - - - - -
-

cUPnPClassVideoItem Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPClassVideoItem:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPClassVideoItem:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual cStringList * getPropertyList ()
virtual bool setProperty (const char *Property, const char *Value)
virtual bool getProperty (const char *Property, char **Value) const
int setLongDescription (const char *LongDescription)
int setDescription (const char *Description)
int setPublishers (const char *Publishers)
int setGenre (const char *Genre)
int setLanguage (const char *Language)
int setRelations (const char *Relations)
int setDirectors (const char *Directors)
int setActors (const char *Actors)
int setProducers (const char *Producers)
int setRating (const char *Rating)
const char * getGenre () const
const char * getLongDescription () const
const char * getDescription () const
const char * getPublishers () const
const char * getLanguage () const
const char * getRelations () const
const char * getActors () const
const char * getProducers () const
const char * getDirectors () const
const char * getRating () const

Protected Member Functions

 cUPnPClassVideoItem ()

Protected Attributes

-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.

Friends

-class cMediaDatabase
-class cUPnPObjectMediator
-class cUPnPVideoItemMediator
-


Detailed Description

-The UPnP class VideoItem

-This is a UPnP class VideoItem representation with all its properties.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPClassVideoItem::cUPnPClassVideoItem (  )  [protected]
-
-
- -

-Constructor of a video item

-This creates a new instance of a video item -

-

-


Member Function Documentation

- -
-
- - - - - - - - -
const char* cUPnPClassVideoItem::getActors (  )  const [inline]
-
-
- -

-Get the actors

-This returns a CSV list of actors in the video

-

Returns:
a CSV list of actors
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getDescription (  )  const [inline]
-
-
- -

-Get the description

-This returns the description of a video

-

Returns:
the description of a video
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getDirectors (  )  const [inline]
-
-
- -

-Get the directors

-This returns a CSV list of directors

-

Returns:
a CSV list of directors
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getGenre (  )  const [inline]
-
-
- -

-Get the genres

-This returns a CSV list of genre

-

Returns:
the genre of a video
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getLanguage (  )  const [inline]
-
-
- -

-Get the language

-This returns the language of the video

-

Returns:
the language
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getLongDescription (  )  const [inline]
-
-
- -

-Get the long description

-This returns the long description of a video

-

Returns:
the long description of a video
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getProducers (  )  const [inline]
-
-
- -

-Get the producers

-This returns a CSV list of producers of a video

-

Returns:
a CSV list of producers
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassVideoItem::getProperty (const char *  Property,
char **  Value 
) const [virtual]
-
-
- -

-Gets a property

-Returns the value of a specified property. The value is converted into a string.

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be returned
Value the value of that property
-
- -

Reimplemented from cUPnPClassItem.

- -

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - -
cStringList * cUPnPClassVideoItem::getPropertyList (  )  [virtual]
-
-
- -

-Get the properties of the object

-This returns a property list with all the properties which can be obtained or set with getProperty or setProperty.

-

Returns:
a stringlist with the properties
- -

Reimplemented from cUPnPClassItem.

- -

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getPublishers (  )  const [inline]
-
-
- -

-Get the publishers

-This returns a CSV list of publishers of the video

-

Returns:
a CSV list of publishers
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getRating (  )  const [inline]
-
-
- -

-Get the rating

-This returns the rating used for parental control.

-

Returns:
the rating of a video
- -
-

- -

-
- - - - - - - - -
const char* cUPnPClassVideoItem::getRelations (  )  const [inline]
-
-
- -

-Get the relations

-This returns a CSV list of relation URLs.

-

Returns:
a CSV list of relation URLs
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setActors (const char *  Actors  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Actors a CSV list of actors
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setDescription (const char *  Description  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Description the description of a video
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setDirectors (const char *  Directors  ) 
-
-
- -

-Sets the directors

-This sets a CSV list of directors.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Directors a CSV list of directors
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setGenre (const char *  Genre  ) 
-
-
- -

-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.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Genre a CSV list of genre
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setLanguage (const char *  Language  ) 
-
-
- -

-Set the language

-This sets the language of a video. It is defined by RFC 1766. A valid language definition is "de-DE" or "en-US".

-

See also:
http://www.ietf.org/rfc/rfc1766.txt
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Language the language (RFC 1766)
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setLongDescription (const char *  LongDescription  ) 
-
-
- -

-Set a long description

-A long description may hold information about the content or the story of a video

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
LongDescription the content or story of a video
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setProducers (const char *  Producers  ) 
-
-
- -

-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

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Producers a CSV list of producers
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPClassVideoItem::setProperty (const char *  Property,
const char *  Value 
) [virtual]
-
-
- -

-Sets a property

-Sets the value of a specified property. The value is converted from string into the propper data type

-

Returns:
returns
    -
  • true, if the property exists
  • false, otherwise
-
-
Parameters:
- - - -
Property the property which should be set
Value the value of that property
-
- -

Reimplemented from cUPnPClassItem.

- -

Reimplemented in cUPnPClassMovie, and cUPnPClassVideoBroadcast.

- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setPublishers (const char *  Publishers  ) 
-
-
- -

-Set the publishers

-This is a CSV list of publishers, who distributes the video.

-

Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Publishers a CSV list of publishers
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setRating (const char *  Rating  ) 
-
-
- -

-Sets the rating

-This is a rating, which can be used for parential control issues.

-

See also:
http://en.wikipedia.org/wiki/Motion_picture_rating_system
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Rating the rating of a video
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPClassVideoItem::setRelations (const char *  Relations  ) 
-
-
- -

-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 also:
http://www.ietf.org/rfc/rfc2396.txt
-
Returns:
returns
    -
  • 0, if setting was successful
  • <0, otherwise
-
-
Parameters:
- - -
Relations a CSV list with relations
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.map b/doc/html/classcUPnPClassVideoItem__coll__graph.map deleted file mode 100644 index a9509e7..0000000 --- a/doc/html/classcUPnPClassVideoItem__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.md5 b/doc/html/classcUPnPClassVideoItem__coll__graph.md5 deleted file mode 100644 index c3899e0..0000000 --- a/doc/html/classcUPnPClassVideoItem__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -34f026924d51053d5f9e15b214f3a294 \ No newline at end of file diff --git a/doc/html/classcUPnPClassVideoItem__coll__graph.png b/doc/html/classcUPnPClassVideoItem__coll__graph.png deleted file mode 100644 index 5d69afd..0000000 Binary files a/doc/html/classcUPnPClassVideoItem__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.map b/doc/html/classcUPnPClassVideoItem__inherit__graph.map deleted file mode 100644 index a415818..0000000 --- a/doc/html/classcUPnPClassVideoItem__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.md5 b/doc/html/classcUPnPClassVideoItem__inherit__graph.md5 deleted file mode 100644 index 3776d41..0000000 --- a/doc/html/classcUPnPClassVideoItem__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d7af3d9550df3e91b8f7b6858958b342 \ No newline at end of file diff --git a/doc/html/classcUPnPClassVideoItem__inherit__graph.png b/doc/html/classcUPnPClassVideoItem__inherit__graph.png deleted file mode 100644 index e806ab8..0000000 Binary files a/doc/html/classcUPnPClassVideoItem__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPConfig-members.html b/doc/html/classcUPnPConfig-members.html deleted file mode 100644 index 5ea5a7b..0000000 --- a/doc/html/classcUPnPConfig-members.html +++ /dev/null @@ -1,40 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPConfig Member List

This is the complete list of members for cUPnPConfig, including all inherited members.

- - - - - - - - - -
get()cUPnPConfig [static]
mAddresscUPnPConfig
mAutoSetupcUPnPConfig
mEnablecUPnPConfig
mInterfacecUPnPConfig
mPortcUPnPConfig
parseSetup(const char *Name, const char *Value)cUPnPConfig
processArgs(int argc, char *argv[])cUPnPConfig
~cUPnPConfig() (defined in cUPnPConfig)cUPnPConfig [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPConfig.html b/doc/html/classcUPnPConfig.html deleted file mode 100644 index 472dc60..0000000 --- a/doc/html/classcUPnPConfig.html +++ /dev/null @@ -1,178 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPConfig Class Reference - - - - - -
-

cUPnPConfig Class Reference

#include <config.h> -

-

-Collaboration diagram for cUPnPConfig:
-
-

Collaboration graph
-
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

bool parseSetup (const char *Name, const char *Value)
bool processArgs (int argc, char *argv[])

Static Public Member Functions

static cUPnPConfigget ()

Public Attributes

-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
-


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.


Member Function Documentation

- -
-
- - - - - - - - -
cUPnPConfig * cUPnPConfig::get (  )  [static]
-
-
- -

-Get the configuration

-This returns the instance of the current configuration settings.

-

Returns:
the configuration object
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPConfig::parseSetup (const char *  Name,
const char *  Value 
)
-
-
- -

-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.

-

Returns:
returns
    -
  • true, if parsing was successful
  • false, otherwise
-
-
Parameters:
- - - -
Name the name of the variable
Value the according value of the variable
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
bool cUPnPConfig::processArgs (int  argc,
char *  argv[] 
)
-
-
- -

-Processes the commandline arguments

-This processes the commandline arguments which the user specified at the start of the plugin.

-

Returns:
returns
    -
  • true, if processing was successful
  • false, otherwise
-
-
Parameters:
- - - -
argc the number of arguments in the list
argv the arguments as a char array
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPConfig__coll__graph.map b/doc/html/classcUPnPConfig__coll__graph.map deleted file mode 100644 index e69de29..0000000 diff --git a/doc/html/classcUPnPConfig__coll__graph.md5 b/doc/html/classcUPnPConfig__coll__graph.md5 deleted file mode 100644 index e6fe914..0000000 --- a/doc/html/classcUPnPConfig__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16dc9fa3b1153736d2d57e2740650c4d \ No newline at end of file diff --git a/doc/html/classcUPnPConfig__coll__graph.png b/doc/html/classcUPnPConfig__coll__graph.png deleted file mode 100644 index 3dfe4c1..0000000 Binary files a/doc/html/classcUPnPConfig__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPContainerMediator-members.html b/doc/html/classcUPnPContainerMediator-members.html deleted file mode 100644 index 3a60ef8..0000000 --- a/doc/html/classcUPnPContainerMediator-members.html +++ /dev/null @@ -1,46 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPContainerMediator Member List

This is the complete list of members for cUPnPContainerMediator, including all inherited members.

- - - - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPContainerMediator [virtual]
cUPnPContainerMediator(cMediaDatabase *MediaDatabase)cUPnPContainerMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPContainerMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPContainerMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPContainerMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPContainerMediator() (defined in cUPnPContainerMediator)cUPnPContainerMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPContainerMediator.html b/doc/html/classcUPnPContainerMediator.html deleted file mode 100644 index 433db1c..0000000 --- a/doc/html/classcUPnPContainerMediator.html +++ /dev/null @@ -1,240 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPContainerMediator Class Reference - - - - - -
-

cUPnPContainerMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPContainerMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPContainerMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

 cUPnPContainerMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassContainercreateObject (const char *Title, bool Restricted)
virtual cUPnPClassContainergetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPContainerMediator::cUPnPContainerMediator (cMediaDatabase MediaDatabase  ) 
-
-
- -

-Constructor of container mediator

-This creates a new container mediator with which it is possible to create new instances of Container objects.

-

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cUPnPClassContainer * cUPnPContainerMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Reimplemented from cUPnPObjectMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPContainerMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented from cUPnPObjectMediator.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassContainer * cUPnPContainerMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Reimplemented from cUPnPObjectMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPContainerMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented from cUPnPObjectMediator.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.map b/doc/html/classcUPnPContainerMediator__coll__graph.map deleted file mode 100644 index bfcb01e..0000000 --- a/doc/html/classcUPnPContainerMediator__coll__graph.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.md5 b/doc/html/classcUPnPContainerMediator__coll__graph.md5 deleted file mode 100644 index e54babc..0000000 --- a/doc/html/classcUPnPContainerMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -66f5da7843c802547d759d766879ccb4 \ No newline at end of file diff --git a/doc/html/classcUPnPContainerMediator__coll__graph.png b/doc/html/classcUPnPContainerMediator__coll__graph.png deleted file mode 100644 index 357d3d3..0000000 Binary files a/doc/html/classcUPnPContainerMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.map b/doc/html/classcUPnPContainerMediator__inherit__graph.map deleted file mode 100644 index 3ce2849..0000000 --- a/doc/html/classcUPnPContainerMediator__inherit__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.md5 b/doc/html/classcUPnPContainerMediator__inherit__graph.md5 deleted file mode 100644 index 477ed2e..0000000 --- a/doc/html/classcUPnPContainerMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -11cb7d4c3eba53182b362177908a74af \ No newline at end of file diff --git a/doc/html/classcUPnPContainerMediator__inherit__graph.png b/doc/html/classcUPnPContainerMediator__inherit__graph.png deleted file mode 100644 index e3009e2..0000000 Binary files a/doc/html/classcUPnPContainerMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPItemMediator-members.html b/doc/html/classcUPnPItemMediator-members.html deleted file mode 100644 index ab69060..0000000 --- a/doc/html/classcUPnPItemMediator-members.html +++ /dev/null @@ -1,46 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPItemMediator Member List

This is the complete list of members for cUPnPItemMediator, including all inherited members.

- - - - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPItemMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPItemMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPItemMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPItemMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPItemMediator.html b/doc/html/classcUPnPItemMediator.html deleted file mode 100644 index 90e6200..0000000 --- a/doc/html/classcUPnPItemMediator.html +++ /dev/null @@ -1,248 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPItemMediator Class Reference - - - - - -
-

cUPnPItemMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPItemMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPItemMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

 cUPnPItemMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassItemcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassItemgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPItemMediator::cUPnPItemMediator (cMediaDatabase MediaDatabase  ) 
-
-
- -

-Constructor of item mediator

-This creates a new item mediator with which it is possible to create new instances of Item objects.

-

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cUPnPClassItem * cUPnPItemMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Reimplemented from cUPnPObjectMediator.

- -

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPItemMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented from cUPnPObjectMediator.

- -

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassItem * cUPnPItemMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Reimplemented from cUPnPObjectMediator.

- -

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPItemMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented from cUPnPObjectMediator.

- -

Reimplemented in cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPItemMediator__coll__graph.map b/doc/html/classcUPnPItemMediator__coll__graph.map deleted file mode 100644 index bfcb01e..0000000 --- a/doc/html/classcUPnPItemMediator__coll__graph.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/doc/html/classcUPnPItemMediator__coll__graph.md5 b/doc/html/classcUPnPItemMediator__coll__graph.md5 deleted file mode 100644 index ad05037..0000000 --- a/doc/html/classcUPnPItemMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0be414ee07dd08aaa1a4e7765c2f4252 \ No newline at end of file diff --git a/doc/html/classcUPnPItemMediator__coll__graph.png b/doc/html/classcUPnPItemMediator__coll__graph.png deleted file mode 100644 index 68148f6..0000000 Binary files a/doc/html/classcUPnPItemMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.map b/doc/html/classcUPnPItemMediator__inherit__graph.map deleted file mode 100644 index 563a4e6..0000000 --- a/doc/html/classcUPnPItemMediator__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.md5 b/doc/html/classcUPnPItemMediator__inherit__graph.md5 deleted file mode 100644 index 730523b..0000000 --- a/doc/html/classcUPnPItemMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -23596ccf93e1f2f5d730c6067c3694c1 \ No newline at end of file diff --git a/doc/html/classcUPnPItemMediator__inherit__graph.png b/doc/html/classcUPnPItemMediator__inherit__graph.png deleted file mode 100644 index ce4064d..0000000 Binary files a/doc/html/classcUPnPItemMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPMovieMediator-members.html b/doc/html/classcUPnPMovieMediator-members.html deleted file mode 100644 index f9d4ea4..0000000 --- a/doc/html/classcUPnPMovieMediator-members.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPMovieMediator Member List

This is the complete list of members for cUPnPMovieMediator, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPMovieMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPMovieMediator(cMediaDatabase *MediaDatabase)cUPnPMovieMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPMovieMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPMovieMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPMovieMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPMovieMediator() (defined in cUPnPMovieMediator)cUPnPMovieMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPMovieMediator.html b/doc/html/classcUPnPMovieMediator.html deleted file mode 100644 index b3eafd3..0000000 --- a/doc/html/classcUPnPMovieMediator.html +++ /dev/null @@ -1,240 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPMovieMediator Class Reference - - - - - -
-

cUPnPMovieMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPMovieMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPMovieMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

 cUPnPMovieMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassMoviecreateObject (const char *Title, bool Restricted)
virtual cUPnPClassMoviegetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPMovieMediator::cUPnPMovieMediator (cMediaDatabase MediaDatabase  ) 
-
-
- -

-Constructor of movie mediator

-This creates a new movie mediator with which it is possible to create new instances of Movie objects.

-

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cUPnPClassMovie * cUPnPMovieMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPMovieMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassMovie * cUPnPMovieMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPMovieMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.map b/doc/html/classcUPnPMovieMediator__coll__graph.map deleted file mode 100644 index dc6c054..0000000 --- a/doc/html/classcUPnPMovieMediator__coll__graph.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.md5 b/doc/html/classcUPnPMovieMediator__coll__graph.md5 deleted file mode 100644 index 3eb9487..0000000 --- a/doc/html/classcUPnPMovieMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b28509e037ae2d73a04b1f501693c90e \ No newline at end of file diff --git a/doc/html/classcUPnPMovieMediator__coll__graph.png b/doc/html/classcUPnPMovieMediator__coll__graph.png deleted file mode 100644 index 05ff2b4..0000000 Binary files a/doc/html/classcUPnPMovieMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.map b/doc/html/classcUPnPMovieMediator__inherit__graph.map deleted file mode 100644 index 63ebd83..0000000 --- a/doc/html/classcUPnPMovieMediator__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.md5 b/doc/html/classcUPnPMovieMediator__inherit__graph.md5 deleted file mode 100644 index fa5b43c..0000000 --- a/doc/html/classcUPnPMovieMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cf286798b665eb8622707f73085bd4e0 \ No newline at end of file diff --git a/doc/html/classcUPnPMovieMediator__inherit__graph.png b/doc/html/classcUPnPMovieMediator__inherit__graph.png deleted file mode 100644 index 4371982..0000000 Binary files a/doc/html/classcUPnPMovieMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPObjectFactory-members.html b/doc/html/classcUPnPObjectFactory-members.html deleted file mode 100644 index 468d79f..0000000 --- a/doc/html/classcUPnPObjectFactory-members.html +++ /dev/null @@ -1,39 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPObjectFactory Member List

This is the complete list of members for cUPnPObjectFactory, including all inherited members.

- - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectFactory
createObject(const char *UPnPClass, const char *Title, bool Restricted=true)cUPnPObjectFactory
deleteObject(cUPnPClassObject *Object)cUPnPObjectFactory
getInstance()cUPnPObjectFactory [static]
getObject(cUPnPObjectID ID)cUPnPObjectFactory
registerMediator(const char *UPnPClass, cMediatorInterface *Mediator)cUPnPObjectFactory
saveObject(cUPnPClassObject *Object)cUPnPObjectFactory
unregisterMediator(const char *UPnPClass, bool freeMediator=true)cUPnPObjectFactory

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPObjectFactory.html b/doc/html/classcUPnPObjectFactory.html deleted file mode 100644 index 1150753..0000000 --- a/doc/html/classcUPnPObjectFactory.html +++ /dev/null @@ -1,332 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPObjectFactory Class Reference - - - - - -
-

cUPnPObjectFactory Class Reference

#include <object.h> -

-

-Collaboration diagram for cUPnPObjectFactory:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - -

Public Member Functions

void registerMediator (const char *UPnPClass, cMediatorInterface *Mediator)
void unregisterMediator (const char *UPnPClass, bool freeMediator=true)
cUPnPClassObjectcreateObject (const char *UPnPClass, const char *Title, bool Restricted=true)
cUPnPClassObjectgetObject (cUPnPObjectID ID)
int saveObject (cUPnPClassObject *Object)
int deleteObject (cUPnPClassObject *Object)
int clearObject (cUPnPClassObject *Object)

Static Public Member Functions

static cUPnPObjectFactorygetInstance ()
-


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 cMediatorInterface class to work with this factory.


Member Function Documentation

- -
-
- - - - - - - - - -
int cUPnPObjectFactory::clearObject (cUPnPClassObject Object  ) 
-
-
- -

-Clears the object

-This clears the object, i.e. all its children will be removed and deleted from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be cleared
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
cUPnPClassObject * cUPnPObjectFactory::createObject (const char *  UPnPClass,
const char *  Title,
bool  Restricted = true 
)
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
-

-

Parameters:
- - -
UPnPClass the class of the new object
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPObjectFactory::deleteObject (cUPnPClassObject Object  ) 
-
-
- -

-Deletes the object

-This deletes the object in the database by removing all its children and then deleting the contents from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be deleted
-
- -
-

- -

-
- - - - - - - - -
cUPnPObjectFactory * cUPnPObjectFactory::getInstance (  )  [static]
-
-
- -

-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.

-

Returns:
the instance of the factory
- -
-

- -

-
- - - - - - - - - -
cUPnPClassObject * cUPnPObjectFactory::getObject (cUPnPObjectID  ID  ) 
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cUPnPObjectFactory::registerMediator (const char *  UPnPClass,
cMediatorInterface Mediator 
)
-
-
- -

-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.

-

Parameters:
- - - -
UPnPClass the class of which the mediator is associated to
Mediator the mediator itself
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPObjectFactory::saveObject (cUPnPClassObject Object  ) 
-
-
- -

-Saves the object

-This saves the object in the database by updating the values in the database with those in the object.

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cUPnPObjectFactory::unregisterMediator (const char *  UPnPClass,
bool  freeMediator = true 
)
-
-
- -

-Unregisters a mediator

-This unregisters a mediator if it is not needed anylonger. If the optional parameter freeMediator is set, the object instance will be free'd after removing it from the list.

-

Parameters:
- - - -
UPnPClass the class of the associated mediator
freeMediator flag to indicate if the mediator shall be free'd after removing
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.map b/doc/html/classcUPnPObjectFactory__coll__graph.map deleted file mode 100644 index 36c490e..0000000 --- a/doc/html/classcUPnPObjectFactory__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.md5 b/doc/html/classcUPnPObjectFactory__coll__graph.md5 deleted file mode 100644 index 0741725..0000000 --- a/doc/html/classcUPnPObjectFactory__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4b1d1db4c258c702267dd46ae7547035 \ No newline at end of file diff --git a/doc/html/classcUPnPObjectFactory__coll__graph.png b/doc/html/classcUPnPObjectFactory__coll__graph.png deleted file mode 100644 index 891223a..0000000 Binary files a/doc/html/classcUPnPObjectFactory__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPObjectMediator-members.html b/doc/html/classcUPnPObjectMediator-members.html deleted file mode 100644 index 457d3d8..0000000 --- a/doc/html/classcUPnPObjectMediator-members.html +++ /dev/null @@ -1,44 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPObjectMediator Member List

This is the complete list of members for cUPnPObjectMediator, including all inherited members.

- - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPObjectMediator [virtual]
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPObjectMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPObjectMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPObjectMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPObjectMediator.html b/doc/html/classcUPnPObjectMediator.html deleted file mode 100644 index 9341c18..0000000 --- a/doc/html/classcUPnPObjectMediator.html +++ /dev/null @@ -1,410 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPObjectMediator Class Reference - - - - - -
-

cUPnPObjectMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPObjectMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPObjectMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual cUPnPClassObjectcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassObjectgetObject (cUPnPObjectID ID)
virtual int saveObject (cUPnPClassObject *Object)
virtual int deleteObject (cUPnPClassObject *Object)
virtual int clearObject (cUPnPClassObject *Object)

Protected Member Functions

 cUPnPObjectMediator (cMediaDatabase *MediaDatabase)
virtual int initializeObject (cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)
virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)

Protected Attributes

-cSQLiteDatabasemDatabase
 the SQLite 3 database wrapper
-cMediaDatabasemMediaDatabase
 the media database
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPObjectMediator::cUPnPObjectMediator (cMediaDatabase MediaDatabase  )  [protected]
-
-
- -

-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

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - -
int cUPnPObjectMediator::clearObject (cUPnPClassObject Object  )  [virtual]
-
-
- -

-Clears the object

-This clears the object, i.e. all its children will be removed and deleted from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be cleared
-
- -

Implements cMediatorInterface.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
cUPnPClassObject * cUPnPObjectMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Implements cMediatorInterface.

- -

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPObjectMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPObjectMediator::deleteObject (cUPnPClassObject Object  )  [virtual]
-
-
- -

-Deletes the object

-This deletes the object in the database by removing all its children and then deleting the contents from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be deleted
-
- -

Implements cMediatorInterface.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassObject * cUPnPObjectMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Implements cMediatorInterface.

- -

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int cUPnPObjectMediator::initializeObject (cUPnPClassObject Object,
const char *  Class,
const char *  Title,
bool  Restricted 
) [protected, virtual]
-
-
- -

-Initializes an object

-This initializes an object, which means, that it will be created in the database with the required details.

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - - - -
Object the object to be initialized
Class the class of the object
Title the title of the object
Restricted restriction of the object
-
- -
-

- -

-
- - - - - - - - - -
int cUPnPObjectMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented in cUPnPItemMediator, cUPnPVideoItemMediator, cUPnPVideoBroadcastMediator, cUPnPMovieMediator, and cUPnPContainerMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPObjectMediator::saveObject (cUPnPClassObject Object  )  [virtual]
-
-
- -

-Saves the object

-This saves the object in the database by updating the values in the database with those in the object.

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Implements cMediatorInterface.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.map b/doc/html/classcUPnPObjectMediator__coll__graph.map deleted file mode 100644 index eac265a..0000000 --- a/doc/html/classcUPnPObjectMediator__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.md5 b/doc/html/classcUPnPObjectMediator__coll__graph.md5 deleted file mode 100644 index 5d8763f..0000000 --- a/doc/html/classcUPnPObjectMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -82ea5e2544d0b2024eb8822c70954a87 \ No newline at end of file diff --git a/doc/html/classcUPnPObjectMediator__coll__graph.png b/doc/html/classcUPnPObjectMediator__coll__graph.png deleted file mode 100644 index f620ae1..0000000 Binary files a/doc/html/classcUPnPObjectMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.map b/doc/html/classcUPnPObjectMediator__inherit__graph.map deleted file mode 100644 index 060c4a3..0000000 --- a/doc/html/classcUPnPObjectMediator__inherit__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.md5 b/doc/html/classcUPnPObjectMediator__inherit__graph.md5 deleted file mode 100644 index 9d2d582..0000000 --- a/doc/html/classcUPnPObjectMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f14b6c4562f6ccdc713d4e6d17576bb2 \ No newline at end of file diff --git a/doc/html/classcUPnPObjectMediator__inherit__graph.png b/doc/html/classcUPnPObjectMediator__inherit__graph.png deleted file mode 100644 index 82c3858..0000000 Binary files a/doc/html/classcUPnPObjectMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPObjects-members.html b/doc/html/classcUPnPObjects-members.html deleted file mode 100644 index 8df2272..0000000 --- a/doc/html/classcUPnPObjects-members.html +++ /dev/null @@ -1,34 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPObjects Member List

This is the complete list of members for cUPnPObjects, including all inherited members.

- - - -
cUPnPObjects() (defined in cUPnPObjects)cUPnPObjects
SortBy(const char *Property, bool Descending=false)cUPnPObjects
~cUPnPObjects() (defined in cUPnPObjects)cUPnPObjects [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPObjects.html b/doc/html/classcUPnPObjects.html deleted file mode 100644 index c729ec4..0000000 --- a/doc/html/classcUPnPObjects.html +++ /dev/null @@ -1,81 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPObjects Class Reference - - - - - -
-

cUPnPObjects Class Reference

#include <object.h> -

- -

-List of all members. - - - - -

Public Member Functions

void SortBy (const char *Property, bool Descending=false)
-


Detailed Description

-List of UPnP Objects

-This is a cList of UPnP Objects The list can be sorted by using a specific property


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void cUPnPObjects::SortBy (const char *  Property,
bool  Descending = false 
)
-
-
- -

-Sorts the list

-This sorts the list by a specific property and a certain direction

Parameters:
- - - -
Property the property used for sorting
Descending the direction of the sort
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResource-members.html b/doc/html/classcUPnPResource-members.html deleted file mode 100644 index 34544ee..0000000 --- a/doc/html/classcUPnPResource-members.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPResource Member List

This is the complete list of members for cUPnPResource, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
cAudioVideoDetector (defined in cUPnPResource)cUPnPResource [friend]
cUPnPResourceMediator (defined in cUPnPResource)cUPnPResource [friend]
cUPnPResources (defined in cUPnPResource)cUPnPResource [friend]
getBitrate() const cUPnPResource [inline]
getBitsPerSample() const cUPnPResource [inline]
getColorDepth() const cUPnPResource [inline]
getContentType() const cUPnPResource [inline]
getDuration() const cUPnPResource [inline]
getFileSize() const cUPnPResource
getID() const cUPnPResource [inline]
getImportURI() const cUPnPResource [inline]
getLastModification() const cUPnPResource
getNrAudioChannels() const cUPnPResource [inline]
getProtocolInfo() const cUPnPResource [inline]
getResolution() const cUPnPResource [inline]
getResource() const cUPnPResource [inline]
getResourceType() const cUPnPResource [inline]
getSampleFrequency() const cUPnPResource [inline]
getSize() const cUPnPResource [inline]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResource.html b/doc/html/classcUPnPResource.html deleted file mode 100644 index 1cf720a..0000000 --- a/doc/html/classcUPnPResource.html +++ /dev/null @@ -1,444 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPResource Class Reference - - - - - -
-

cUPnPResource Class Reference

#include <object.h> -

-

-Collaboration diagram for cUPnPResource:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

unsigned int getID () const
const char * getResource () const
const char * getDuration () const
const char * getResolution () const
const char * getProtocolInfo () const
const char * getContentType () const
const char * getImportURI () const
int getResourceType () const
unsigned long getSize () const
off64_t getFileSize () const
time_t getLastModification () const
unsigned int getBitrate () const
unsigned int getSampleFrequency () const
unsigned int getBitsPerSample () const
unsigned int getNrAudioChannels () const
unsigned int getColorDepth () const

Friends

-class cUPnPResourceMediator
-class cUPnPResources
-class cAudioVideoDetector
-


Detailed Description

-UPnP Resource

-This contains all details about a resource


Member Function Documentation

- -
-
- - - - - - - - -
unsigned int cUPnPResource::getBitrate (  )  const [inline]
-
-
- -

-Get the bitrate

-This returns the bitrate of the resource in bits per second.

-

Returns:
the bitrate of the resource
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPResource::getBitsPerSample (  )  const [inline]
-
-
- -

-Get the bits per sample

-Returns the number of bits per sample.

-

Returns:
the bits per sample of the resource
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPResource::getColorDepth (  )  const [inline]
-
-
- -

-Get the color depth

-Returns the color depth of the resource in pits per pixel

-

Returns:
the color depth of the resource
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getContentType (  )  const [inline]
-
-
- -

-Get the content type

-Returns the mime type of the content of the resource

-

Returns:
the content type of the resource
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getDuration (  )  const [inline]
-
-
- -

-Get the duration

-Returns a date time string with the duration of the resource

-

Returns:
the duration of the resource
- -
-

- -

-
- - - - - - - - -
off64_t cUPnPResource::getFileSize (  )  const
-
-
- -

-Get the file size

-Returns the file size in bytes of the resource or 0 if its unknown or a stream

-

Returns:
the file size
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPResource::getID (  )  const [inline]
-
-
- -

-Get resource ID

-Gets the resource ID

-

Returns:
the resource ID
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getImportURI (  )  const [inline]
-
-
- -

-Get the import URI

-This returns the import URI where the resource was located before importing it

-

Returns:
the import URI
- -
-

- -

-
- - - - - - - - -
time_t cUPnPResource::getLastModification (  )  const
-
-
- -

-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.

-

Returns:
the timestamp with the last modification of the resource
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPResource::getNrAudioChannels (  )  const [inline]
-
-
- -

-Get number of audio channels

-Returns the number of audio channels of the audio stream in a video

-

Returns:
the number of audio channels
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getProtocolInfo (  )  const [inline]
-
-
- -

-Get the protocol info

-This returns the protocol info field of a resource

-

Returns:
the protocol info string
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getResolution (  )  const [inline]
-
-
- -

-Get the resolution

-Returns the resolution string with the pattern width x height in pixels

-

Returns:
the resolution of the resource
- -
-

- -

-
- - - - - - - - -
const char* cUPnPResource::getResource (  )  const [inline]
-
-
- -

-Get the resources

-Returns the resource. This is in most cases the file name or resource locator where to find the resource

-

Returns:
the resource string
- -
-

- -

-
- - - - - - - - -
int cUPnPResource::getResourceType (  )  const [inline]
-
-
- -

-Get the resource type

-This returns the resource type of the resource.

-

Returns:
the resource type
- -
-

- -

-
- - - - - - - - -
unsigned int cUPnPResource::getSampleFrequency (  )  const [inline]
-
-
- -

-Get the sample frequency

-Returns the sample frequency in samples per second.

-

Returns:
the sample frequency of the resource
- -
-

- -

-
- - - - - - - - -
unsigned long cUPnPResource::getSize (  )  const [inline]
-
-
- -

-Get the size

-Returns the resource size or -1 if its unknown

-

Returns:
the resource size or -1 if unknown
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResourceMediator-members.html b/doc/html/classcUPnPResourceMediator-members.html deleted file mode 100644 index df867e0..0000000 --- a/doc/html/classcUPnPResourceMediator-members.html +++ /dev/null @@ -1,36 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPResourceMediator Member List

This is the complete list of members for cUPnPResourceMediator, including all inherited members.

- - - - - -
cUPnPResources (defined in cUPnPResourceMediator)cUPnPResourceMediator [friend]
getResource(unsigned int ResourceID)cUPnPResourceMediator
newResource(cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)cUPnPResourceMediator
saveResource(cUPnPResource *Resource)cUPnPResourceMediator
~cUPnPResourceMediator() (defined in cUPnPResourceMediator)cUPnPResourceMediator [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResourceMediator.html b/doc/html/classcUPnPResourceMediator.html deleted file mode 100644 index 0f683d3..0000000 --- a/doc/html/classcUPnPResourceMediator.html +++ /dev/null @@ -1,177 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPResourceMediator Class Reference - - - - - -
-

cUPnPResourceMediator Class Reference

#include <resources.h> -

-

-Collaboration diagram for cUPnPResourceMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - -

Public Member Functions

cUPnPResourcegetResource (unsigned int ResourceID)
int saveResource (cUPnPResource *Resource)
cUPnPResourcenewResource (cUPnPClassObject *Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo)

Friends

-class cUPnPResources
-


Detailed Description

-The resource mediator

-This is another mediator which communicates with the database. It manages the resources in the database


Member Function Documentation

- -
-
- - - - - - - - - -
cUPnPResource * cUPnPResourceMediator::getResource (unsigned int  ResourceID  ) 
-
-
- -

-Get a resource by ID

-This returns a resource by its resource ID

-

Parameters:
- - -
ResourceID the resource ID of the demanded resource
-
-
Returns:
the requested resource
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cUPnPResource * cUPnPResourceMediator::newResource (cUPnPClassObject Object,
int  ResourceType,
cString  ResourceFile,
cString  ContentType,
cString  ProtocolInfo 
)
-
-
- -

-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.

-

Parameters:
- - - - - - -
Object the Object which will hold the resource
ResourceType the type of the resource
ResourceFile the file or URL, where the resource can be located
ContentType the mime type of the content
ProtocolInfo the protocol information of the resource
-
-
Returns:
the newly created resource
- -
-

- -

-
- - - - - - - - - -
int cUPnPResourceMediator::saveResource (cUPnPResource Resource  ) 
-
-
- -

-Saves the resource

-This updates the information in the database with those in the resource object

-

Parameters:
- - -
Resource the resource which shall be saved
-
-
Returns:
returns
    -
  • 0, if saving was successful
  • <0, if an error occured
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.map b/doc/html/classcUPnPResourceMediator__coll__graph.map deleted file mode 100644 index 8866bbe..0000000 --- a/doc/html/classcUPnPResourceMediator__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.md5 b/doc/html/classcUPnPResourceMediator__coll__graph.md5 deleted file mode 100644 index 1bdf579..0000000 --- a/doc/html/classcUPnPResourceMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fc457de78914027436062a81d4c6a18a \ No newline at end of file diff --git a/doc/html/classcUPnPResourceMediator__coll__graph.png b/doc/html/classcUPnPResourceMediator__coll__graph.png deleted file mode 100644 index 717d1c6..0000000 Binary files a/doc/html/classcUPnPResourceMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPResource__coll__graph.map b/doc/html/classcUPnPResource__coll__graph.map deleted file mode 100644 index a09fd35..0000000 --- a/doc/html/classcUPnPResource__coll__graph.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/classcUPnPResource__coll__graph.md5 b/doc/html/classcUPnPResource__coll__graph.md5 deleted file mode 100644 index c7e97b0..0000000 --- a/doc/html/classcUPnPResource__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f771dfca9a945d9e574a7c2d256df95f \ No newline at end of file diff --git a/doc/html/classcUPnPResource__coll__graph.png b/doc/html/classcUPnPResource__coll__graph.png deleted file mode 100644 index a62d8a4..0000000 Binary files a/doc/html/classcUPnPResource__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPResources-members.html b/doc/html/classcUPnPResources-members.html deleted file mode 100644 index d6589a0..0000000 --- a/doc/html/classcUPnPResources-members.html +++ /dev/null @@ -1,39 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPResources Member List

This is the complete list of members for cUPnPResources, including all inherited members.

- - - - - - - - -
createFromChannel(cUPnPClassVideoBroadcast *Object, cChannel *Channel)cUPnPResources
createFromFile(cUPnPClassItem *Object, cString File)cUPnPResources
createFromRecording(cUPnPClassVideoItem *Object, cRecording *Recording)cUPnPResources
getInstance()cUPnPResources [static]
getResource(unsigned int ResourceID)cUPnPResources
getResourcesOfObject(cUPnPClassObject *Object)cUPnPResources
loadResources()cUPnPResources
~cUPnPResources() (defined in cUPnPResources)cUPnPResources [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResources.html b/doc/html/classcUPnPResources.html deleted file mode 100644 index 5e1be2a..0000000 --- a/doc/html/classcUPnPResources.html +++ /dev/null @@ -1,289 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPResources Class Reference - - - - - -
-

cUPnPResources Class Reference

#include <resources.h> -

-

-Collaboration diagram for cUPnPResources:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - -

Public Member Functions

int getResourcesOfObject (cUPnPClassObject *Object)
int loadResources ()
cUPnPResourcegetResource (unsigned int ResourceID)
int createFromChannel (cUPnPClassVideoBroadcast *Object, cChannel *Channel)
int createFromRecording (cUPnPClassVideoItem *Object, cRecording *Recording)
int createFromFile (cUPnPClassItem *Object, cString File)

Static Public Member Functions

static cUPnPResourcesgetInstance ()
-


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.


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
int cUPnPResources::createFromChannel (cUPnPClassVideoBroadcast Object,
cChannel *  Channel 
)
-
-
- -

-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.

-

Parameters:
- - - -
Object the videoBroadcast item which holds the resource
Channel the VDR TV channel
-
-
Returns:
returns
    -
  • 0, if loading was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPResources::createFromFile (cUPnPClassItem Object,
cString  File 
)
-
-
- -

-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.

-

Parameters:
- - - -
Object the item which holds the resource
File the file name
-
-
Returns:
returns
    -
  • 0, if loading was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPResources::createFromRecording (cUPnPClassVideoItem Object,
cRecording *  Recording 
)
-
-
- -

-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.

-

Parameters:
- - - -
Object the videoItem item which holds the resource
Recording the VDR TV recording
-
-
Returns:
returns
    -
  • 0, if loading was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - -
cUPnPResources * cUPnPResources::getInstance (  )  [static]
-
-
- -

-Get the instance of the resource manager

-This returns the instance of the resource manager.

-

Returns:
the instance of the manager
- -
-

- -

-
- - - - - - - - - -
cUPnPResource * cUPnPResources::getResource (unsigned int  ResourceID  ) 
-
-
- -

-Get a resource by ID

-This returns a resource by its resource ID

-

Parameters:
- - -
ResourceID the resource ID of the demanded resource
-
-
Returns:
the requested resource
- -
-

- -

-
- - - - - - - - - -
int cUPnPResources::getResourcesOfObject (cUPnPClassObject Object  ) 
-
-
- -

-Fill object with its resources

-This will load all the resources from the database, which are associated to the given object

-

Parameters:
- - -
Object the object, which shall be filled
-
-
Returns:
returns
    -
  • 0, if loading was successful
  • <0, otherwise
-
- -
-

- -

-
- - - - - - - - -
int cUPnPResources::loadResources (  ) 
-
-
- -

-Loads all resources from database

-This loads all resources from the database into the internal cache.

-

Returns:
returns
    -
  • 0, if loading was successful
  • <0, otherwise
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPResources__coll__graph.map b/doc/html/classcUPnPResources__coll__graph.map deleted file mode 100644 index a40f8cc..0000000 --- a/doc/html/classcUPnPResources__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPResources__coll__graph.md5 b/doc/html/classcUPnPResources__coll__graph.md5 deleted file mode 100644 index 60f459d..0000000 --- a/doc/html/classcUPnPResources__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b006b7705cc573c7958bea56515eb5e9 \ No newline at end of file diff --git a/doc/html/classcUPnPResources__coll__graph.png b/doc/html/classcUPnPResources__coll__graph.png deleted file mode 100644 index 91eebd1..0000000 Binary files a/doc/html/classcUPnPResources__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPServer-members.html b/doc/html/classcUPnPServer-members.html deleted file mode 100644 index ac1d791..0000000 --- a/doc/html/classcUPnPServer-members.html +++ /dev/null @@ -1,48 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPServer Member List

This is the complete list of members for cUPnPServer, including all inherited members.

- - - - - - - - - - - - - - - - - -
autoDetectSettings(void)cUPnPServer
cPluginUpnp (defined in cUPnPServer)cUPnPServer [friend]
cUPnPServer()cUPnPServer
enable(bool enabled)cUPnPServer
getInterface(void) const cUPnPServer [inline]
getServerAddress(void)cUPnPServer
isAutoDetectionEnabled()cUPnPServer [inline]
isEnabled(void) const cUPnPServer [inline]
isRunning(void) const cUPnPServer [inline]
restart(void)cUPnPServer
setAddress(const char *Address)cUPnPServer
setAutoDetection(bool enable)cUPnPServer
setInterface(const char *Interface)cUPnPServer
setServerPort(unsigned short port)cUPnPServer
start(void)cUPnPServer
stop(void)cUPnPServer
~cUPnPServer()cUPnPServer [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPServer.html b/doc/html/classcUPnPServer.html deleted file mode 100644 index f39af3e..0000000 --- a/doc/html/classcUPnPServer.html +++ /dev/null @@ -1,493 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPServer Class Reference - - - - - -
-

cUPnPServer Class Reference

#include <server.h> -

-

-Collaboration diagram for cUPnPServer:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 cUPnPServer ()
virtual ~cUPnPServer ()
void enable (bool enabled)
bool start (void)
bool restart (void)
void stop (void)
bool autoDetectSettings (void)
sockaddr_in * getServerAddress (void)
const char * getInterface (void) const
bool setServerPort (unsigned short port)
bool setInterface (const char *Interface)
bool setAddress (const char *Address)
bool setAutoDetection (bool enable)
bool isEnabled (void) const
bool isRunning (void) const
bool isAutoDetectionEnabled ()

Friends

-class cPluginUpnp
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPServer::cUPnPServer (  ) 
-
-
- -

-Constructor

-This will create a new server and initializes the main functionalities The server has to be started manually by invoking cUPnPServer::start(). -

-

- -

-
- - - - - - - - -
cUPnPServer::~cUPnPServer (  )  [virtual]
-
-
- -

-Destructor

-This will destroy the server object. Open ports and connections will be closed. -

-

-


Member Function Documentation

- -
-
- - - - - - - - - -
bool cUPnPServer::autoDetectSettings (void   ) 
-
-
- -

-Automatically detect settings

-This will automatically detect the network settings if the autodetection is turned on.

-

Returns:
returns
    -
  • true, if autoDetection was successful
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
void cUPnPServer::enable (bool  enabled  ) 
-
-
- -

-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.

-

Parameters:
- - -
enabled if true, the server will be enabled. If false it is disabled.
-
- -
-

- -

-
- - - - - - - - - -
const char* cUPnPServer::getInterface (void   )  const [inline]
-
-
- -

-Get the interface the server listens to

-

Returns:
the network interface
- -
-

- -

-
- - - - - - - - - -
sockaddr_in * cUPnPServer::getServerAddress (void   ) 
-
-
- -

-Get the server address

-Returns a server address structure including IP address and port

-

Returns:
The server socket address
- -
-

- -

-
- - - - - - - - -
bool cUPnPServer::isAutoDetectionEnabled (  )  [inline]
-
-
- -

-Is auto detection enabled or not

-Returns true or false if auto detection is enabled or not

-

Returns:
returns
    -
  • true, if autodetection is enabled
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::isEnabled (void   )  const [inline]
-
-
- -

-Checks if the server is enabled

-This indicates if the server is currently enabled.

-

Returns:
returns
    -
  • true, if the server is enabled
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::isRunning (void   )  const [inline]
-
-
- -

-Checks if the server is running

-If the server is enabled, this indicates if it is running.

-

Returns:
returns
    -
  • true if the server is running
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::restart (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.

-

Returns:
returns
    -
  • true, when the server restarted successfully
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::setAddress (const char *  Address  ) 
-
-
- -

-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.

-

Parameters:
- - -
Address The address of the server
-
-
Returns:
returns
    -
  • true, if the new server address is set
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::setAutoDetection (bool  enable  ) 
-
-
- -

-Enables oder Disables auto detection mode

-If this is set to true, the setup will get it's information via auto detection

-

Parameters:
- - -
enable true enables and false disables the auto detection
-
-
Returns:
returns
    -
  • true, if the new server address is set
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::setInterface (const char *  Interface  ) 
-
-
- -

-The Interface to listen on

-Sets the listener interface, for instance 'eth1' or 'wlan0'

-

Parameters:
- - -
Interface The interface of the server
-
-
Returns:
returns
    -
  • true, if the new server address is set
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::setServerPort (unsigned short  port  ) 
-
-
- -

-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

-

Parameters:
- - -
port The port of the server
-
-
Returns:
returns
    -
  • true, if the new server port is set
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPServer::start (void   ) 
-
-
- -

-Start the UPnP server

-This will start the UPnP server activities as a background task.

-

Returns:
returns
    -
  • true, when the server started successfully
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - -
void cUPnPServer::stop (void   ) 
-
-
- -

-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: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPServer__coll__graph.map b/doc/html/classcUPnPServer__coll__graph.map deleted file mode 100644 index 1f481da..0000000 --- a/doc/html/classcUPnPServer__coll__graph.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/doc/html/classcUPnPServer__coll__graph.md5 b/doc/html/classcUPnPServer__coll__graph.md5 deleted file mode 100644 index 252c5d8..0000000 --- a/doc/html/classcUPnPServer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -25a92edd9d207f855284afda5cbf298c \ No newline at end of file diff --git a/doc/html/classcUPnPServer__coll__graph.png b/doc/html/classcUPnPServer__coll__graph.png deleted file mode 100644 index 60c24c4..0000000 Binary files a/doc/html/classcUPnPServer__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPVideoBroadcastMediator-members.html b/doc/html/classcUPnPVideoBroadcastMediator-members.html deleted file mode 100644 index 82d00d2..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator-members.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPVideoBroadcastMediator Member List

This is the complete list of members for cUPnPVideoBroadcastMediator, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPVideoBroadcastMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoBroadcastMediator(cMediaDatabase *MediaDatabase)cUPnPVideoBroadcastMediator
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPVideoBroadcastMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPVideoBroadcastMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPVideoBroadcastMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoBroadcastMediator() (defined in cUPnPVideoBroadcastMediator)cUPnPVideoBroadcastMediator [inline, virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPVideoBroadcastMediator.html b/doc/html/classcUPnPVideoBroadcastMediator.html deleted file mode 100644 index 021b992..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator.html +++ /dev/null @@ -1,240 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPVideoBroadcastMediator Class Reference - - - - - -
-

cUPnPVideoBroadcastMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPVideoBroadcastMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPVideoBroadcastMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

 cUPnPVideoBroadcastMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassVideoBroadcastcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassVideoBroadcastgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator (cMediaDatabase MediaDatabase  ) 
-
-
- -

-Constructor of video broadcast mediator

-This creates a new video broadcast mediator with which it is possible to create new instances of VideoBroadcast objects.

-

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cUPnPClassVideoBroadcast * cUPnPVideoBroadcastMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPVideoBroadcastMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassVideoBroadcast * cUPnPVideoBroadcastMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPVideoBroadcastMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented from cUPnPVideoItemMediator.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map deleted file mode 100644 index dc6c054..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 deleted file mode 100644 index 36ff50a..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -991d65c3e92ec87d22ab429197f3a0b5 \ No newline at end of file diff --git a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png b/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png deleted file mode 100644 index c99c0ce..0000000 Binary files a/doc/html/classcUPnPVideoBroadcastMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map deleted file mode 100644 index 485a0cd..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 deleted file mode 100644 index 4b1638b..0000000 --- a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -09739d895aa0f05515bf466297c32a8d \ No newline at end of file diff --git a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png b/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png deleted file mode 100644 index b318300..0000000 Binary files a/doc/html/classcUPnPVideoBroadcastMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPVideoItemMediator-members.html b/doc/html/classcUPnPVideoItemMediator-members.html deleted file mode 100644 index ec93ba6..0000000 --- a/doc/html/classcUPnPVideoItemMediator-members.html +++ /dev/null @@ -1,48 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPVideoItemMediator Member List

This is the complete list of members for cUPnPVideoItemMediator, including all inherited members.

- - - - - - - - - - - - - - - - - -
clearObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
createObject(const char *Title, bool Restricted)cUPnPVideoItemMediator [virtual]
cUPnPItemMediator(cMediaDatabase *MediaDatabase)cUPnPItemMediator
cUPnPObjectMediator(cMediaDatabase *MediaDatabase)cUPnPObjectMediator [protected]
cUPnPVideoItemMediator(cMediaDatabase *MediaDatabase)cUPnPVideoItemMediator
databaseToObject(cUPnPClassObject *Object, cUPnPObjectID ID)cUPnPVideoItemMediator [protected, virtual]
deleteObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
getObject(cUPnPObjectID ID)cUPnPVideoItemMediator [virtual]
initializeObject(cUPnPClassObject *Object, const char *Class, const char *Title, bool Restricted)cUPnPObjectMediator [protected, virtual]
mDatabasecUPnPObjectMediator [protected]
mMediaDatabasecUPnPObjectMediator [protected]
objectToDatabase(cUPnPClassObject *Object)cUPnPVideoItemMediator [protected, virtual]
saveObject(cUPnPClassObject *Object)cUPnPObjectMediator [virtual]
~cMediatorInterface() (defined in cMediatorInterface)cMediatorInterface [inline, virtual]
~cUPnPItemMediator() (defined in cUPnPItemMediator)cUPnPItemMediator [inline, virtual]
~cUPnPObjectMediator() (defined in cUPnPObjectMediator)cUPnPObjectMediator [virtual]
~cUPnPVideoItemMediator() (defined in cUPnPVideoItemMediator)cUPnPVideoItemMediator [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPVideoItemMediator.html b/doc/html/classcUPnPVideoItemMediator.html deleted file mode 100644 index f22c558..0000000 --- a/doc/html/classcUPnPVideoItemMediator.html +++ /dev/null @@ -1,248 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPVideoItemMediator Class Reference - - - - - -
-

cUPnPVideoItemMediator Class Reference

#include <object.h> -

-

-Inheritance diagram for cUPnPVideoItemMediator:
-
-

Inheritance graph
- - -
[legend]
-
-Collaboration diagram for cUPnPVideoItemMediator:
-
-

Collaboration graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

 cUPnPVideoItemMediator (cMediaDatabase *MediaDatabase)
virtual cUPnPClassVideoItemcreateObject (const char *Title, bool Restricted)
virtual cUPnPClassVideoItemgetObject (cUPnPObjectID ID)

Protected Member Functions

virtual int objectToDatabase (cUPnPClassObject *Object)
virtual int databaseToObject (cUPnPClassObject *Object, cUPnPObjectID ID)
-


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.


Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
cUPnPVideoItemMediator::cUPnPVideoItemMediator (cMediaDatabase MediaDatabase  ) 
-
-
- -

-Constructor of videoitem mediator

-This creates a new videoitem mediator with which it is possible to create new instances of VideoItem objects.

-

Parameters:
- - -
MediaDatabase the media database
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
cUPnPClassVideoItem * cUPnPVideoItemMediator::createObject (const char *  Title,
bool  Restricted 
) [virtual]
-
-
- -

-Creates an object

-This creates a new UPnP object with the specific title and the restriction.

-

Returns:
the newly created object
-
Parameters:
- - - -
Title the title of that object
Restricted the restriction of the object
-
- -

Reimplemented from cUPnPItemMediator.

- -

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPVideoItemMediator::databaseToObject (cUPnPClassObject Object,
cUPnPObjectID  ID 
) [protected, virtual]
-
-
- -

-Loads an object from database

-This loads an object from the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - - -
Object the object to be loaded
ID the object ID of that object
-
- -

Reimplemented from cUPnPItemMediator.

- -

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - -
cUPnPClassVideoItem * cUPnPVideoItemMediator::getObject (cUPnPObjectID  ID  )  [virtual]
-
-
- -

-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.

-

Returns:
the object, found in the database
-
Parameters:
- - -
ID the object ID
-
- -

Reimplemented from cUPnPItemMediator.

- -

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

- -

-
- - - - - - - - - -
int cUPnPVideoItemMediator::objectToDatabase (cUPnPClassObject Object  )  [protected, virtual]
-
-
- -

-Store the object in the database

-This stores the information of an object in the database

-

Returns:
returns
    -
  • <0, in case of an error
  • 0, otherwise
-
-
Parameters:
- - -
Object the object to be saved
-
- -

Reimplemented from cUPnPItemMediator.

- -

Reimplemented in cUPnPVideoBroadcastMediator, and cUPnPMovieMediator.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.map b/doc/html/classcUPnPVideoItemMediator__coll__graph.map deleted file mode 100644 index 2cabbce..0000000 --- a/doc/html/classcUPnPVideoItemMediator__coll__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.md5 b/doc/html/classcUPnPVideoItemMediator__coll__graph.md5 deleted file mode 100644 index d6fe833..0000000 --- a/doc/html/classcUPnPVideoItemMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ce34fe7d1ef66a2c6c9babd7cdd910c2 \ No newline at end of file diff --git a/doc/html/classcUPnPVideoItemMediator__coll__graph.png b/doc/html/classcUPnPVideoItemMediator__coll__graph.png deleted file mode 100644 index 59e7254..0000000 Binary files a/doc/html/classcUPnPVideoItemMediator__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.map b/doc/html/classcUPnPVideoItemMediator__inherit__graph.map deleted file mode 100644 index 5892869..0000000 --- a/doc/html/classcUPnPVideoItemMediator__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 b/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 deleted file mode 100644 index 8170d85..0000000 --- a/doc/html/classcUPnPVideoItemMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8979290e79d7aff1732e0fee59f4bce1 \ No newline at end of file diff --git a/doc/html/classcUPnPVideoItemMediator__inherit__graph.png b/doc/html/classcUPnPVideoItemMediator__inherit__graph.png deleted file mode 100644 index ce6ce3f..0000000 Binary files a/doc/html/classcUPnPVideoItemMediator__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcUPnPWebServer-members.html b/doc/html/classcUPnPWebServer-members.html deleted file mode 100644 index 46483c3..0000000 --- a/doc/html/classcUPnPWebServer-members.html +++ /dev/null @@ -1,42 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPWebServer Member List

This is the complete list of members for cUPnPWebServer, including all inherited members.

- - - - - - - - - - - -
close(UpnpWebFileHandle fh)cUPnPWebServer [static]
cUPnPServer (defined in cUPnPWebServer)cUPnPWebServer [friend]
getInfo(const char *filename, struct File_Info *info)cUPnPWebServer [static]
getInstance(const char *rootdir="/")cUPnPWebServer [static]
init()cUPnPWebServer
open(const char *filename, UpnpOpenFileMode mode)cUPnPWebServer [static]
read(UpnpWebFileHandle fh, char *buf, size_t buflen)cUPnPWebServer [static]
seek(UpnpWebFileHandle fh, off_t offset, int origin)cUPnPWebServer [static]
uninit()cUPnPWebServer
write(UpnpWebFileHandle fh, char *buf, size_t buflen)cUPnPWebServer [static]
~cUPnPWebServer() (defined in cUPnPWebServer)cUPnPWebServer [virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPWebServer.html b/doc/html/classcUPnPWebServer.html deleted file mode 100644 index 868ea13..0000000 --- a/doc/html/classcUPnPWebServer.html +++ /dev/null @@ -1,396 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPWebServer Class Reference - - - - - -
-

cUPnPWebServer Class Reference

#include <upnpwebserver.h> -

-

-Collaboration diagram for cUPnPWebServer:
-
-

Collaboration graph
-
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

bool init ()
bool uninit ()

Static Public Member Functions

static cUPnPWebServergetInstance (const char *rootdir="/")
static int getInfo (const char *filename, struct File_Info *info)
static UpnpWebFileHandle open (const char *filename, UpnpOpenFileMode mode)
static int read (UpnpWebFileHandle fh, char *buf, size_t buflen)
static int write (UpnpWebFileHandle fh, char *buf, size_t buflen)
static int seek (UpnpWebFileHandle fh, off_t offset, int origin)
static int close (UpnpWebFileHandle fh)

Friends

-class cUPnPServer
-


Detailed Description

-The internal webserver

-This is the internal webserver. It distributes all the contents of the UPnP-Server.


Member Function Documentation

- -
-
- - - - - - - - - -
int cUPnPWebServer::close (UpnpWebFileHandle  fh  )  [static]
-
-
- -

-Closes the file

-closes the opened file

-Returns 0 on success, non-zero value otherwise

-

Returns:
0 on success, non-zero value otherwise
-
Parameters:
- - -
fh the file handle of the opened file
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
int cUPnPWebServer::getInfo (const char *  filename,
struct File_Info *  info 
) [static]
-
-
- -

-Retrieve file information

-Returns file related information for an virtual directory file

-

Returns:
0 on success, -1 otherwise
-
Parameters:
- - - -
filename The filename of which the information is gathered
info The File_Info structure with the data
-
- -
-

- -

-
- - - - - - - - - -
cUPnPWebServer * cUPnPWebServer::getInstance (const char *  rootdir = "/"  )  [static]
-
-
- -

-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.

-

Returns:
the instance of webserver
-
Parameters:
- - -
rootdir the root directory of the webserver
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPWebServer::init (void   ) 
-
-
- -

-Initializes the webserver

-It enables the webserver which comes with the Intel SDK and creates virtual directories for shares media.

-

Returns:
returns
    -
  • true, if initializing was successful
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
UpnpWebFileHandle cUPnPWebServer::open (const char *  filename,
UpnpOpenFileMode  mode 
) [static]
-
-
- -

-Opens a virtual directory file

-Opens a file in a virtual directory with the specified mode.

-Possible modes are:

    -
  • UPNP_READ, Opens the file for reading
  • UPNP_WRITE, Opens the file for writing
-

-It returns a file handle to the opened file, NULL otherwise

-

Returns:
FileHandle to the opened file, NULL otherwise
-
Parameters:
- - - -
filename The file to open
mode UPNP_WRITE for writing, UPNP_READ for reading.
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
int cUPnPWebServer::read (UpnpWebFileHandle  fh,
char *  buf,
size_t  buflen 
) [static]
-
-
- -

-Reads from the opened file

-Reads buflen bytes from the file and stores the content to the buffer

-Returns 0 no more bytes read (EOF) >0 bytes read from file

-

Returns:
number of bytes read, 0 on EOF
-
Parameters:
- - - - -
fh the file handle of the opened file
buf the buffer to write the bytes to
buflen the maximum count of bytes to read
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
int cUPnPWebServer::seek (UpnpWebFileHandle  fh,
off_t  offset,
int  origin 
) [static]
-
-
- -

-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

-

Returns:
0 on success, non-zero value otherwise
-
Parameters:
- - - - -
fh the file handle of the opened file
offset a negative oder positive value which moves the pointer forward or backward
origin SEEK_CUR, SEEK_END or SEEK_SET
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPWebServer::uninit (void   ) 
-
-
- -

-Uninitializes the webserver

-This stops the webserver.

-

Returns:
returns
    -
  • true, if initializing was successful
  • false, otherwise
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
int cUPnPWebServer::write (UpnpWebFileHandle  fh,
char *  buf,
size_t  buflen 
) [static]
-
-
- -

-Writes to the opened file

-Writes 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

-

Returns:
number of bytes read, 0 on EOF
-
Parameters:
- - - - -
fh the file handle of the opened file
buf the buffer to read the bytes from
buflen the maximum count of bytes to write
-
- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUPnPWebServer__coll__graph.map b/doc/html/classcUPnPWebServer__coll__graph.map deleted file mode 100644 index e69de29..0000000 diff --git a/doc/html/classcUPnPWebServer__coll__graph.md5 b/doc/html/classcUPnPWebServer__coll__graph.md5 deleted file mode 100644 index 3f697b5..0000000 --- a/doc/html/classcUPnPWebServer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -da2c5790677b1c131add36ec9afdf776 \ No newline at end of file diff --git a/doc/html/classcUPnPWebServer__coll__graph.png b/doc/html/classcUPnPWebServer__coll__graph.png deleted file mode 100644 index 3f7b7fb..0000000 Binary files a/doc/html/classcUPnPWebServer__coll__graph.png and /dev/null differ diff --git a/doc/html/classcUpnpService-members.html b/doc/html/classcUpnpService-members.html deleted file mode 100644 index 574db9d..0000000 --- a/doc/html/classcUpnpService-members.html +++ /dev/null @@ -1,38 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUpnpService Member List

This is the complete list of members for cUpnpService, including all inherited members.

- - - - - - - -
execute(Upnp_Action_Request *Request)=0cUpnpService [pure virtual]
mDeviceHandlecUpnpService [protected]
parseIntegerValue(IN IXML_Document *Document, IN const char *Item, OUT int *Value)cUpnpService [protected]
parseStringValue(IN IXML_Document *Document, IN const char *Item, OUT char **Value)cUpnpService [protected]
setError(Upnp_Action_Request *Request, int Error)cUpnpService [protected, virtual]
subscribe(Upnp_Subscription_Request *Request)=0cUpnpService [pure virtual]
~cUpnpService() (defined in cUpnpService)cUpnpService [inline, virtual]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUpnpService.html b/doc/html/classcUpnpService.html deleted file mode 100644 index e88a78e..0000000 --- a/doc/html/classcUpnpService.html +++ /dev/null @@ -1,294 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUpnpService Class Reference - - - - - -
-

cUpnpService Class Reference

#include <upnpservice.h> -

-

-Inheritance diagram for cUpnpService:
-
-

Inheritance graph
- - -
[legend]
- -

-List of all members. - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual int subscribe (Upnp_Subscription_Request *Request)=0
virtual int execute (Upnp_Action_Request *Request)=0

Protected Member Functions

virtual void setError (Upnp_Action_Request *Request, int Error)
int parseIntegerValue (IN IXML_Document *Document, IN const char *Item, OUT int *Value)
int parseStringValue (IN IXML_Document *Document, IN const char *Item, OUT char **Value)

Protected Attributes

-UpnpDevice_Handle mDeviceHandle
 the UPnP device handle of the root device
-


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.


Member Function Documentation

- -
-
- - - - - - - - - -
virtual int cUpnpService::execute (Upnp_Action_Request *  Request  )  [pure virtual]
-
-
- -

-Executes an action

-This executes an action initialized by a control point. The result is stored in the first parameter.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Input and output parameters of an action
-
-
Parameters:
- - -
Request Input and output parameters of an action
-
- -

Implemented in cConnectionManager, and cContentDirectory.

- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
int cUpnpService::parseIntegerValue (IN IXML_Document *  Document,
IN const char *  Item,
OUT int *  Value 
) [protected]
-
-
- -

-Parses an integer value

-This tool function parses an integer value from a given IXML document. It is searching for the very first occurance of the demanded item.

-

Returns:
Returns
    -
  • 0, if parsing was successful
  • <0, if an error occured
-
-
Parameters:
- - - - -
Document the document, which is parsed
Item the demanded item
Value the value of the item
-
-
Parameters:
- - - - -
Document the document, which is parsed
Item the demanded item
Value the value of the item
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - -
int cUpnpService::parseStringValue (IN IXML_Document *  Document,
IN const char *  Item,
OUT char **  Value 
) [protected]
-
-
- -

-Parses a string value

-This tool function parses a string value from a given IXML document. It is searching for the very first occurance of the demanded item.

-

Returns:
Returns
    -
  • 0, if parsing was successful
  • <0, if an error occured
-
-
Parameters:
- - - - -
Document the document, which is parsed
Item the demanded item
Value the value of the item
-
-
Parameters:
- - - - -
Document the document, which is parsed
Item the demanded item
Value the value of the item
-
- -
-

- -

-
- - - - - - - - - - - - - - - - - - -
void cUpnpService::setError (Upnp_Action_Request *  Request,
int  Error 
) [protected, virtual]
-
-
- -

-Sets an error on an action request

-This function puts a error message into the action request structure according to its error code

-

Parameters:
- - - -
Request the action request, to set the error for
Error the error code of which the message should be obtained
-
-
Parameters:
- - - -
Request the action request, to set the error for
Error the error code of which the message should be obtained
-
- -

Reimplemented in cConnectionManager, and cContentDirectory.

- -
-

- -

-
- - - - - - - - - -
virtual int cUpnpService::subscribe (Upnp_Subscription_Request *  Request  )  [pure virtual]
-
-
- -

-Subscribes to an event

-This is a callback function to register a new subscriber for an event.

-

Returns:
An integer representing one of the following:
    -
  • UPNP_E_SUCCESS, if subscription was okay
  • or any other non null value in case of an error
-
-
Parameters:
- - -
Request Information about the subscription
-
-
Parameters:
- - -
Request Information about the subscription
-
- -

Implemented in cConnectionManager, and cContentDirectory.

- -
-

-


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcUpnpService__inherit__graph.map b/doc/html/classcUpnpService__inherit__graph.map deleted file mode 100644 index 17edb5d..0000000 --- a/doc/html/classcUpnpService__inherit__graph.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/doc/html/classcUpnpService__inherit__graph.md5 b/doc/html/classcUpnpService__inherit__graph.md5 deleted file mode 100644 index b6dd168..0000000 --- a/doc/html/classcUpnpService__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a6fdb9c815f084fc93fc6310f7bf1343 \ No newline at end of file diff --git a/doc/html/classcUpnpService__inherit__graph.png b/doc/html/classcUpnpService__inherit__graph.png deleted file mode 100644 index e79ea59..0000000 Binary files a/doc/html/classcUpnpService__inherit__graph.png and /dev/null differ diff --git a/doc/html/classcVirtualConnection-members.html b/doc/html/classcVirtualConnection-members.html deleted file mode 100644 index e44de80..0000000 --- a/doc/html/classcVirtualConnection-members.html +++ /dev/null @@ -1,32 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cVirtualConnection Member List

This is the complete list of members for cVirtualConnection, including all inherited members.

- -
cConnectionManager (defined in cVirtualConnection)cVirtualConnection [friend]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classcVirtualConnection.html b/doc/html/classcVirtualConnection.html deleted file mode 100644 index 607fe7f..0000000 --- a/doc/html/classcVirtualConnection.html +++ /dev/null @@ -1,45 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cVirtualConnection Class Reference - - - - - -
-

cVirtualConnection Class Reference

#include <connectionmanager.h> -

- -

-List of all members. - - - - -

Friends

-class cConnectionManager
-


Detailed Description

-Virtual connection

-A virtual connection managed by the connection manager service


The documentation for this class was generated from the following files: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/classes.html b/doc/html/classes.html deleted file mode 100644 index 42e9221..0000000 --- a/doc/html/classes.html +++ /dev/null @@ -1,35 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Alphabetical List - - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/common_8h-source.html b/doc/html/common_8h-source.html deleted file mode 100644 index 400a46f..0000000 --- a/doc/html/common_8h-source.html +++ /dev/null @@ -1,766 +0,0 @@ - - -UPnP/DLNA plugin for VDR: common.h Source File - - - - - -
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/config_8h-source.html b/doc/html/config_8h-source.html deleted file mode 100644 index 4fd9900..0000000 --- a/doc/html/config_8h-source.html +++ /dev/null @@ -1,59 +0,0 @@ - - -UPnP/DLNA plugin for VDR: misc/config.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/connectionmanager_8h-source.html b/doc/html/connectionmanager_8h-source.html deleted file mode 100644 index 6b9df28..0000000 --- a/doc/html/connectionmanager_8h-source.html +++ /dev/null @@ -1,95 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnpcomponents/connectionmanager.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/contentdirectory_8h-source.html b/doc/html/contentdirectory_8h-source.html deleted file mode 100644 index 374d5a2..0000000 --- a/doc/html/contentdirectory_8h-source.html +++ /dev/null @@ -1,67 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnpcomponents/contentdirectory.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/database_8h-source.html b/doc/html/database_8h-source.html deleted file mode 100644 index 5b0d564..0000000 --- a/doc/html/database_8h-source.html +++ /dev/null @@ -1,898 +0,0 @@ - - -UPnP/DLNA plugin for VDR: database/database.h Source File - - - - - -
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/dlna_8h-source.html b/doc/html/dlna_8h-source.html deleted file mode 100644 index 4d15041..0000000 --- a/doc/html/dlna_8h-source.html +++ /dev/null @@ -1,95 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnpcomponents/dlna.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css deleted file mode 100644 index 3767dc9..0000000 --- a/doc/html/doxygen.css +++ /dev/null @@ -1,441 +0,0 @@ -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 deleted file mode 100644 index f0a274b..0000000 Binary files a/doc/html/doxygen.png and /dev/null differ diff --git a/doc/html/filehandle_8h-source.html b/doc/html/filehandle_8h-source.html deleted file mode 100644 index e8e4980..0000000 --- a/doc/html/filehandle_8h-source.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: receiver/filehandle.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/files.html b/doc/html/files.html deleted file mode 100644 index d44abd1..0000000 --- a/doc/html/files.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: File Index - - - - - -
-

File List

Here is a list of all documented files with brief descriptions: - - - - - - - - - - - - - - - - - - - - -
common.h [code]
upnp.h [code]
database/database.h [code]
database/metadata.h [code]
database/object.h [code]
database/resources.h [code]
misc/avdetector.h [code]
misc/config.h [code]
misc/menusetup.h [code]
misc/search.h [code]
misc/util.h [code]
receiver/filehandle.h [code]
receiver/livereceiver.h [code]
receiver/recplayer.h [code]
server/server.h [code]
upnpcomponents/connectionmanager.h [code]
upnpcomponents/contentdirectory.h [code]
upnpcomponents/dlna.h [code]
upnpcomponents/upnpservice.h [code]
upnpcomponents/upnpwebserver.h [code]
-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions.html b/doc/html/functions.html deleted file mode 100644 index 29e1da5..0000000 --- a/doc/html/functions.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- _ -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x61.html b/doc/html/functions_0x61.html deleted file mode 100644 index 7b10030..0000000 --- a/doc/html/functions_0x61.html +++ /dev/null @@ -1,84 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- a -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html deleted file mode 100644 index 88a9611..0000000 --- a/doc/html/functions_0x62.html +++ /dev/null @@ -1,70 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- b -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html deleted file mode 100644 index 7fa685c..0000000 --- a/doc/html/functions_0x63.html +++ /dev/null @@ -1,136 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- c -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html deleted file mode 100644 index 05a5c5c..0000000 --- a/doc/html/functions_0x64.html +++ /dev/null @@ -1,85 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- d -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html deleted file mode 100644 index 2bf087c..0000000 --- a/doc/html/functions_0x65.html +++ /dev/null @@ -1,74 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- e -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html deleted file mode 100644 index 9ba5cfe..0000000 --- a/doc/html/functions_0x66.html +++ /dev/null @@ -1,70 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- f -

    -
  • fetchColumn() -: cRow -
  • fetchRow() -: cRows -
-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html deleted file mode 100644 index a24a4be..0000000 --- a/doc/html/functions_0x67.html +++ /dev/null @@ -1,234 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- g -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html deleted file mode 100644 index 224ddf0..0000000 --- a/doc/html/functions_0x68.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- h -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html deleted file mode 100644 index 371b129..0000000 --- a/doc/html/functions_0x69.html +++ /dev/null @@ -1,91 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- i -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html deleted file mode 100644 index d66ec15..0000000 --- a/doc/html/functions_0x6c.html +++ /dev/null @@ -1,70 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- l -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html deleted file mode 100644 index 3d35625..0000000 --- a/doc/html/functions_0x6d.html +++ /dev/null @@ -1,167 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- m -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html deleted file mode 100644 index 2b0cf68..0000000 --- a/doc/html/functions_0x6e.html +++ /dev/null @@ -1,71 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- n -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html deleted file mode 100644 index 094c789..0000000 --- a/doc/html/functions_0x6f.html +++ /dev/null @@ -1,100 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- o -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html deleted file mode 100644 index 17e672b..0000000 --- a/doc/html/functions_0x70.html +++ /dev/null @@ -1,84 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- p -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html deleted file mode 100644 index 263c2e5..0000000 --- a/doc/html/functions_0x72.html +++ /dev/null @@ -1,87 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- r -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html deleted file mode 100644 index f5af01a..0000000 --- a/doc/html/functions_0x73.html +++ /dev/null @@ -1,190 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- s -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html deleted file mode 100644 index 9c41e2c..0000000 --- a/doc/html/functions_0x75.html +++ /dev/null @@ -1,74 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- u -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html deleted file mode 100644 index ab1e618..0000000 --- a/doc/html/functions_0x76.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- v -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html deleted file mode 100644 index 51da034..0000000 --- a/doc/html/functions_0x77.html +++ /dev/null @@ -1,73 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- w -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html deleted file mode 100644 index 696985d..0000000 --- a/doc/html/functions_0x7e.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

- ~ -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html deleted file mode 100644 index a37ef25..0000000 --- a/doc/html/functions_func.html +++ /dev/null @@ -1,82 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- a -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x62.html b/doc/html/functions_func_0x62.html deleted file mode 100644 index 1ced278..0000000 --- a/doc/html/functions_func_0x62.html +++ /dev/null @@ -1,66 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- b -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html deleted file mode 100644 index 2cc3e39..0000000 --- a/doc/html/functions_func_0x63.html +++ /dev/null @@ -1,134 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- c -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html deleted file mode 100644 index b71ee03..0000000 --- a/doc/html/functions_func_0x64.html +++ /dev/null @@ -1,83 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- d -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html deleted file mode 100644 index 31cfdd8..0000000 --- a/doc/html/functions_func_0x65.html +++ /dev/null @@ -1,72 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- e -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html deleted file mode 100644 index 3cf24d4..0000000 --- a/doc/html/functions_func_0x66.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- f -

    -
  • fetchColumn() -: cRow -
  • fetchRow() -: cRows -
-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html deleted file mode 100644 index 2d7aecd..0000000 --- a/doc/html/functions_func_0x67.html +++ /dev/null @@ -1,232 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- g -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html deleted file mode 100644 index 06b87fb..0000000 --- a/doc/html/functions_func_0x69.html +++ /dev/null @@ -1,84 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- i -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html deleted file mode 100644 index 47851b5..0000000 --- a/doc/html/functions_func_0x6c.html +++ /dev/null @@ -1,68 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- l -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html deleted file mode 100644 index cf0deb1..0000000 --- a/doc/html/functions_func_0x6d.html +++ /dev/null @@ -1,66 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- m -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html deleted file mode 100644 index 54ae04b..0000000 --- a/doc/html/functions_func_0x6e.html +++ /dev/null @@ -1,69 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- n -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html deleted file mode 100644 index 008b35b..0000000 --- a/doc/html/functions_func_0x6f.html +++ /dev/null @@ -1,98 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- o -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html deleted file mode 100644 index be95372..0000000 --- a/doc/html/functions_func_0x70.html +++ /dev/null @@ -1,80 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- p -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html deleted file mode 100644 index 18991a8..0000000 --- a/doc/html/functions_func_0x72.html +++ /dev/null @@ -1,85 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- r -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html deleted file mode 100644 index 0f4c45d..0000000 --- a/doc/html/functions_func_0x73.html +++ /dev/null @@ -1,186 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- s -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html deleted file mode 100644 index 2581a10..0000000 --- a/doc/html/functions_func_0x75.html +++ /dev/null @@ -1,72 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- u -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x76.html b/doc/html/functions_func_0x76.html deleted file mode 100644 index c54db5c..0000000 --- a/doc/html/functions_func_0x76.html +++ /dev/null @@ -1,66 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- v -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html deleted file mode 100644 index 4d0780d..0000000 --- a/doc/html/functions_func_0x77.html +++ /dev/null @@ -1,69 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html deleted file mode 100644 index a5d063f..0000000 --- a/doc/html/functions_func_0x7e.html +++ /dev/null @@ -1,66 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Functions - - - - - -
-  -

-

- ~ -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html deleted file mode 100644 index dd18f51..0000000 --- a/doc/html/functions_vars.html +++ /dev/null @@ -1,183 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Class Members - Variables - - - - - -
-  -

-

- _ -

-

- b -

-

- h -

-

- i -

-

- m -

-

- p -

-

- s -

-

- w -

-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/graph_legend.dot b/doc/html/graph_legend.dot deleted file mode 100644 index 9a09018..0000000 --- a/doc/html/graph_legend.dot +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 9f3b817..0000000 --- a/doc/html/graph_legend.html +++ /dev/null @@ -1,85 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Graph Legend - - - - - -
-

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

-Consider the following example:

/*! Invisible class because of truncation */
-class Invisible { };
-
-/*! Truncated class, inheritance relation is hidden */
-class Truncated : public Invisible { };
-
-/* Class not documented with doxygen comments */
-class Undocumented { };
-
-/*! Class that is inherited using public inheritance */
-class PublicBase : public Truncated { };
-
-/*! A template class */
-template<class T> class Templ { };
-
-/*! Class that is inherited using protected inheritance */
-class ProtectedBase { };
-
-/*! Class that is inherited using private inheritance */
-class PrivateBase { };
-
-/*! Class that is used by the Inherited class */
-class Used { };
-
-/*! Super class that inherits a number of other classes */
-class Inherited : public PublicBase,
-                  protected ProtectedBase,
-                  private PrivateBase,
-                  public Undocumented,
-                  public Templ<int>
-{
-  private:
-    Used *m_usedClass;
-};
-
This will result in the following graph:

-

-graph_legend.png -
-

-The boxes in the above graph have the following meaning:

    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a grey border denotes an undocumented struct or class.
  • -
  • -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.
  • -
-The arrows have the following meaning:
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -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.
  • -
  • -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.
  • -
-
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png deleted file mode 100644 index 9c64830..0000000 Binary files a/doc/html/graph_legend.png and /dev/null differ diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html deleted file mode 100644 index a40fc32..0000000 --- a/doc/html/hierarchy.html +++ /dev/null @@ -1,98 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Hierarchical Index - - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index f68970c..0000000 --- a/doc/html/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Main Page - - - - - -
-

UPnP/DLNA plugin for VDR Documentation

-

-

0.0.1

-
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/inherit__graph__0.map b/doc/html/inherit__graph__0.map deleted file mode 100644 index a61a799..0000000 --- a/doc/html/inherit__graph__0.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__0.md5 b/doc/html/inherit__graph__0.md5 deleted file mode 100644 index 152d83e..0000000 --- a/doc/html/inherit__graph__0.md5 +++ /dev/null @@ -1 +0,0 @@ -656533ff1c2b4ba4c0df02d3881eb15b \ No newline at end of file diff --git a/doc/html/inherit__graph__0.png b/doc/html/inherit__graph__0.png deleted file mode 100644 index dab2fc3..0000000 Binary files a/doc/html/inherit__graph__0.png and /dev/null differ diff --git a/doc/html/inherit__graph__1.map b/doc/html/inherit__graph__1.map deleted file mode 100644 index e98069e..0000000 --- a/doc/html/inherit__graph__1.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__1.md5 b/doc/html/inherit__graph__1.md5 deleted file mode 100644 index 5cf1bea..0000000 --- a/doc/html/inherit__graph__1.md5 +++ /dev/null @@ -1 +0,0 @@ -fd800ee5748e57248eca4ac10c331777 \ No newline at end of file diff --git a/doc/html/inherit__graph__1.png b/doc/html/inherit__graph__1.png deleted file mode 100644 index 0472c6d..0000000 Binary files a/doc/html/inherit__graph__1.png and /dev/null differ diff --git a/doc/html/inherit__graph__10.map b/doc/html/inherit__graph__10.map deleted file mode 100644 index 9e2a10e..0000000 --- a/doc/html/inherit__graph__10.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__10.md5 b/doc/html/inherit__graph__10.md5 deleted file mode 100644 index a6e6a12..0000000 --- a/doc/html/inherit__graph__10.md5 +++ /dev/null @@ -1 +0,0 @@ -6cc5767b26e27bbe502ba76d6744cc73 \ No newline at end of file diff --git a/doc/html/inherit__graph__10.png b/doc/html/inherit__graph__10.png deleted file mode 100644 index f8b85d3..0000000 Binary files a/doc/html/inherit__graph__10.png and /dev/null differ diff --git a/doc/html/inherit__graph__11.map b/doc/html/inherit__graph__11.map deleted file mode 100644 index a7e07c5..0000000 --- a/doc/html/inherit__graph__11.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__11.md5 b/doc/html/inherit__graph__11.md5 deleted file mode 100644 index 2ab98b7..0000000 --- a/doc/html/inherit__graph__11.md5 +++ /dev/null @@ -1 +0,0 @@ -b4013c16f09455c2c92ebbec1fed8bd9 \ No newline at end of file diff --git a/doc/html/inherit__graph__11.png b/doc/html/inherit__graph__11.png deleted file mode 100644 index 053b527..0000000 Binary files a/doc/html/inherit__graph__11.png and /dev/null differ diff --git a/doc/html/inherit__graph__12.map b/doc/html/inherit__graph__12.map deleted file mode 100644 index d910497..0000000 --- a/doc/html/inherit__graph__12.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__12.md5 b/doc/html/inherit__graph__12.md5 deleted file mode 100644 index 6711e71..0000000 --- a/doc/html/inherit__graph__12.md5 +++ /dev/null @@ -1 +0,0 @@ -3b2f7592c6a12c8eed4afdc919c6318a \ No newline at end of file diff --git a/doc/html/inherit__graph__12.png b/doc/html/inherit__graph__12.png deleted file mode 100644 index 851b60f..0000000 Binary files a/doc/html/inherit__graph__12.png and /dev/null differ diff --git a/doc/html/inherit__graph__13.map b/doc/html/inherit__graph__13.map deleted file mode 100644 index e1a9d60..0000000 --- a/doc/html/inherit__graph__13.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__13.md5 b/doc/html/inherit__graph__13.md5 deleted file mode 100644 index 952dd5e..0000000 --- a/doc/html/inherit__graph__13.md5 +++ /dev/null @@ -1 +0,0 @@ -d7f8910244f8c348e81f2078bb8e6318 \ No newline at end of file diff --git a/doc/html/inherit__graph__13.png b/doc/html/inherit__graph__13.png deleted file mode 100644 index 1e907e9..0000000 Binary files a/doc/html/inherit__graph__13.png and /dev/null differ diff --git a/doc/html/inherit__graph__14.map b/doc/html/inherit__graph__14.map deleted file mode 100644 index f01ae16..0000000 --- a/doc/html/inherit__graph__14.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__14.md5 b/doc/html/inherit__graph__14.md5 deleted file mode 100644 index ff34fde..0000000 --- a/doc/html/inherit__graph__14.md5 +++ /dev/null @@ -1 +0,0 @@ -0932cddc97d09babe22c47174a985177 \ No newline at end of file diff --git a/doc/html/inherit__graph__14.png b/doc/html/inherit__graph__14.png deleted file mode 100644 index aaaf39b..0000000 Binary files a/doc/html/inherit__graph__14.png and /dev/null differ diff --git a/doc/html/inherit__graph__15.map b/doc/html/inherit__graph__15.map deleted file mode 100644 index 3c62baf..0000000 --- a/doc/html/inherit__graph__15.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__15.md5 b/doc/html/inherit__graph__15.md5 deleted file mode 100644 index 2085e9d..0000000 --- a/doc/html/inherit__graph__15.md5 +++ /dev/null @@ -1 +0,0 @@ -2d366559c8dafd43320957d517656049 \ No newline at end of file diff --git a/doc/html/inherit__graph__15.png b/doc/html/inherit__graph__15.png deleted file mode 100644 index 8f51787..0000000 Binary files a/doc/html/inherit__graph__15.png and /dev/null differ diff --git a/doc/html/inherit__graph__16.map b/doc/html/inherit__graph__16.map deleted file mode 100644 index 7eef196..0000000 --- a/doc/html/inherit__graph__16.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/doc/html/inherit__graph__16.md5 b/doc/html/inherit__graph__16.md5 deleted file mode 100644 index 0f067c5..0000000 --- a/doc/html/inherit__graph__16.md5 +++ /dev/null @@ -1 +0,0 @@ -bc70d1ef877c6b85d7d56f42667f022f \ No newline at end of file diff --git a/doc/html/inherit__graph__16.png b/doc/html/inherit__graph__16.png deleted file mode 100644 index f844536..0000000 Binary files a/doc/html/inherit__graph__16.png and /dev/null differ diff --git a/doc/html/inherit__graph__17.map b/doc/html/inherit__graph__17.map deleted file mode 100644 index 243432c..0000000 --- a/doc/html/inherit__graph__17.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__17.md5 b/doc/html/inherit__graph__17.md5 deleted file mode 100644 index 0075d83..0000000 --- a/doc/html/inherit__graph__17.md5 +++ /dev/null @@ -1 +0,0 @@ -14a5063878b5c87bee2e3c7e2edd8890 \ No newline at end of file diff --git a/doc/html/inherit__graph__17.png b/doc/html/inherit__graph__17.png deleted file mode 100644 index bc23571..0000000 Binary files a/doc/html/inherit__graph__17.png and /dev/null differ diff --git a/doc/html/inherit__graph__18.map b/doc/html/inherit__graph__18.map deleted file mode 100644 index 6f9efd1..0000000 --- a/doc/html/inherit__graph__18.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__18.md5 b/doc/html/inherit__graph__18.md5 deleted file mode 100644 index 415f183..0000000 --- a/doc/html/inherit__graph__18.md5 +++ /dev/null @@ -1 +0,0 @@ -b79b47373d0e042c4e6e6f3748d3b799 \ No newline at end of file diff --git a/doc/html/inherit__graph__18.png b/doc/html/inherit__graph__18.png deleted file mode 100644 index 2597bda..0000000 Binary files a/doc/html/inherit__graph__18.png and /dev/null differ diff --git a/doc/html/inherit__graph__19.map b/doc/html/inherit__graph__19.map deleted file mode 100644 index 37e883b..0000000 --- a/doc/html/inherit__graph__19.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__19.md5 b/doc/html/inherit__graph__19.md5 deleted file mode 100644 index ddabd05..0000000 --- a/doc/html/inherit__graph__19.md5 +++ /dev/null @@ -1 +0,0 @@ -31664e8d23a7207c51b57f1d103e3a18 \ No newline at end of file diff --git a/doc/html/inherit__graph__19.png b/doc/html/inherit__graph__19.png deleted file mode 100644 index 7b01670..0000000 Binary files a/doc/html/inherit__graph__19.png and /dev/null differ diff --git a/doc/html/inherit__graph__2.map b/doc/html/inherit__graph__2.map deleted file mode 100644 index a3e2cb6..0000000 --- a/doc/html/inherit__graph__2.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__2.md5 b/doc/html/inherit__graph__2.md5 deleted file mode 100644 index 9cf34c4..0000000 --- a/doc/html/inherit__graph__2.md5 +++ /dev/null @@ -1 +0,0 @@ -af49e515b707f75763f7cf80718eb677 \ No newline at end of file diff --git a/doc/html/inherit__graph__2.png b/doc/html/inherit__graph__2.png deleted file mode 100644 index afad60d..0000000 Binary files a/doc/html/inherit__graph__2.png and /dev/null differ diff --git a/doc/html/inherit__graph__20.map b/doc/html/inherit__graph__20.map deleted file mode 100644 index 013cfa0..0000000 --- a/doc/html/inherit__graph__20.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__20.md5 b/doc/html/inherit__graph__20.md5 deleted file mode 100644 index 5f067a3..0000000 --- a/doc/html/inherit__graph__20.md5 +++ /dev/null @@ -1 +0,0 @@ -35062c2c2182f43554eb440c7200ab08 \ No newline at end of file diff --git a/doc/html/inherit__graph__20.png b/doc/html/inherit__graph__20.png deleted file mode 100644 index 187e93d..0000000 Binary files a/doc/html/inherit__graph__20.png and /dev/null differ diff --git a/doc/html/inherit__graph__21.map b/doc/html/inherit__graph__21.map deleted file mode 100644 index 55fe9da..0000000 --- a/doc/html/inherit__graph__21.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__21.md5 b/doc/html/inherit__graph__21.md5 deleted file mode 100644 index 6f6b8d1..0000000 --- a/doc/html/inherit__graph__21.md5 +++ /dev/null @@ -1 +0,0 @@ -0e448f880d2fde82c2ad6d307abfd36e \ No newline at end of file diff --git a/doc/html/inherit__graph__21.png b/doc/html/inherit__graph__21.png deleted file mode 100644 index dd5b004..0000000 Binary files a/doc/html/inherit__graph__21.png and /dev/null differ diff --git a/doc/html/inherit__graph__22.map b/doc/html/inherit__graph__22.map deleted file mode 100644 index edc4cfb..0000000 --- a/doc/html/inherit__graph__22.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__22.md5 b/doc/html/inherit__graph__22.md5 deleted file mode 100644 index 61d544f..0000000 --- a/doc/html/inherit__graph__22.md5 +++ /dev/null @@ -1 +0,0 @@ -164efacca9f93bd62d5d237be1fc9205 \ No newline at end of file diff --git a/doc/html/inherit__graph__22.png b/doc/html/inherit__graph__22.png deleted file mode 100644 index 5bd6b18..0000000 Binary files a/doc/html/inherit__graph__22.png and /dev/null differ diff --git a/doc/html/inherit__graph__23.map b/doc/html/inherit__graph__23.map deleted file mode 100644 index b54ccbc..0000000 --- a/doc/html/inherit__graph__23.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__23.md5 b/doc/html/inherit__graph__23.md5 deleted file mode 100644 index 05f73ea..0000000 --- a/doc/html/inherit__graph__23.md5 +++ /dev/null @@ -1 +0,0 @@ -5da3cc3aac848698a24ede093a1c8b60 \ No newline at end of file diff --git a/doc/html/inherit__graph__23.png b/doc/html/inherit__graph__23.png deleted file mode 100644 index 483aec1..0000000 Binary files a/doc/html/inherit__graph__23.png and /dev/null differ diff --git a/doc/html/inherit__graph__24.map b/doc/html/inherit__graph__24.map deleted file mode 100644 index a036538..0000000 --- a/doc/html/inherit__graph__24.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__24.md5 b/doc/html/inherit__graph__24.md5 deleted file mode 100644 index cbf6237..0000000 --- a/doc/html/inherit__graph__24.md5 +++ /dev/null @@ -1 +0,0 @@ -d4067186227c387a648bb4001a89e309 \ No newline at end of file diff --git a/doc/html/inherit__graph__24.png b/doc/html/inherit__graph__24.png deleted file mode 100644 index 06ff771..0000000 Binary files a/doc/html/inherit__graph__24.png and /dev/null differ diff --git a/doc/html/inherit__graph__25.map b/doc/html/inherit__graph__25.map deleted file mode 100644 index 9f470e6..0000000 --- a/doc/html/inherit__graph__25.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__25.md5 b/doc/html/inherit__graph__25.md5 deleted file mode 100644 index 6c31a4a..0000000 --- a/doc/html/inherit__graph__25.md5 +++ /dev/null @@ -1 +0,0 @@ -229237716f69442bb8fc692505907713 \ No newline at end of file diff --git a/doc/html/inherit__graph__25.png b/doc/html/inherit__graph__25.png deleted file mode 100644 index 86fefd1..0000000 Binary files a/doc/html/inherit__graph__25.png and /dev/null differ diff --git a/doc/html/inherit__graph__26.map b/doc/html/inherit__graph__26.map deleted file mode 100644 index 95dd720..0000000 --- a/doc/html/inherit__graph__26.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/inherit__graph__26.md5 b/doc/html/inherit__graph__26.md5 deleted file mode 100644 index f7e86b6..0000000 --- a/doc/html/inherit__graph__26.md5 +++ /dev/null @@ -1 +0,0 @@ -886182bb100278eec75b1fbcb4cb30d3 \ No newline at end of file diff --git a/doc/html/inherit__graph__26.png b/doc/html/inherit__graph__26.png deleted file mode 100644 index 4afa572..0000000 Binary files a/doc/html/inherit__graph__26.png and /dev/null differ diff --git a/doc/html/inherit__graph__27.map b/doc/html/inherit__graph__27.map deleted file mode 100644 index 3462348..0000000 --- a/doc/html/inherit__graph__27.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__27.md5 b/doc/html/inherit__graph__27.md5 deleted file mode 100644 index a29e305..0000000 --- a/doc/html/inherit__graph__27.md5 +++ /dev/null @@ -1 +0,0 @@ -c742773ea78447d8fba974fcaeabcca2 \ No newline at end of file diff --git a/doc/html/inherit__graph__27.png b/doc/html/inherit__graph__27.png deleted file mode 100644 index 9b1a0bd..0000000 Binary files a/doc/html/inherit__graph__27.png and /dev/null differ diff --git a/doc/html/inherit__graph__28.map b/doc/html/inherit__graph__28.map deleted file mode 100644 index 98c2251..0000000 --- a/doc/html/inherit__graph__28.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__28.md5 b/doc/html/inherit__graph__28.md5 deleted file mode 100644 index bc10b9b..0000000 --- a/doc/html/inherit__graph__28.md5 +++ /dev/null @@ -1 +0,0 @@ -06e1f31992d53d3644ac14e01b7a50bc \ No newline at end of file diff --git a/doc/html/inherit__graph__28.png b/doc/html/inherit__graph__28.png deleted file mode 100644 index 65d931b..0000000 Binary files a/doc/html/inherit__graph__28.png and /dev/null differ diff --git a/doc/html/inherit__graph__29.map b/doc/html/inherit__graph__29.map deleted file mode 100644 index f614a3f..0000000 --- a/doc/html/inherit__graph__29.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__29.md5 b/doc/html/inherit__graph__29.md5 deleted file mode 100644 index c8dea22..0000000 --- a/doc/html/inherit__graph__29.md5 +++ /dev/null @@ -1 +0,0 @@ -45902844fb33ce1e31de224ff85b0d73 \ No newline at end of file diff --git a/doc/html/inherit__graph__29.png b/doc/html/inherit__graph__29.png deleted file mode 100644 index 8ad849d..0000000 Binary files a/doc/html/inherit__graph__29.png and /dev/null differ diff --git a/doc/html/inherit__graph__3.map b/doc/html/inherit__graph__3.map deleted file mode 100644 index 7f37973..0000000 --- a/doc/html/inherit__graph__3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/doc/html/inherit__graph__3.md5 b/doc/html/inherit__graph__3.md5 deleted file mode 100644 index 5c4d578..0000000 --- a/doc/html/inherit__graph__3.md5 +++ /dev/null @@ -1 +0,0 @@ -3a78ace026180243ee32a23174dbfa1c \ No newline at end of file diff --git a/doc/html/inherit__graph__3.png b/doc/html/inherit__graph__3.png deleted file mode 100644 index 21110b3..0000000 Binary files a/doc/html/inherit__graph__3.png and /dev/null differ diff --git a/doc/html/inherit__graph__30.map b/doc/html/inherit__graph__30.map deleted file mode 100644 index 17a81fb..0000000 --- a/doc/html/inherit__graph__30.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__30.md5 b/doc/html/inherit__graph__30.md5 deleted file mode 100644 index c7a55d8..0000000 --- a/doc/html/inherit__graph__30.md5 +++ /dev/null @@ -1 +0,0 @@ -c3f24193b134694529f631d703c53a21 \ No newline at end of file diff --git a/doc/html/inherit__graph__30.png b/doc/html/inherit__graph__30.png deleted file mode 100644 index 581712e..0000000 Binary files a/doc/html/inherit__graph__30.png and /dev/null differ diff --git a/doc/html/inherit__graph__4.map b/doc/html/inherit__graph__4.map deleted file mode 100644 index 98ebadd..0000000 --- a/doc/html/inherit__graph__4.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__4.md5 b/doc/html/inherit__graph__4.md5 deleted file mode 100644 index fd5bf31..0000000 --- a/doc/html/inherit__graph__4.md5 +++ /dev/null @@ -1 +0,0 @@ -5b2f0325b833ccba1a5439898222f72b \ No newline at end of file diff --git a/doc/html/inherit__graph__4.png b/doc/html/inherit__graph__4.png deleted file mode 100644 index f1805cc..0000000 Binary files a/doc/html/inherit__graph__4.png and /dev/null differ diff --git a/doc/html/inherit__graph__5.map b/doc/html/inherit__graph__5.map deleted file mode 100644 index 9797794..0000000 --- a/doc/html/inherit__graph__5.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__5.md5 b/doc/html/inherit__graph__5.md5 deleted file mode 100644 index f6e99ae..0000000 --- a/doc/html/inherit__graph__5.md5 +++ /dev/null @@ -1 +0,0 @@ -58edcfc55d6b69903a63b636dd5a4a88 \ No newline at end of file diff --git a/doc/html/inherit__graph__5.png b/doc/html/inherit__graph__5.png deleted file mode 100644 index 7a569db..0000000 Binary files a/doc/html/inherit__graph__5.png and /dev/null differ diff --git a/doc/html/inherit__graph__6.map b/doc/html/inherit__graph__6.map deleted file mode 100644 index acdcb46..0000000 --- a/doc/html/inherit__graph__6.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/doc/html/inherit__graph__6.md5 b/doc/html/inherit__graph__6.md5 deleted file mode 100644 index c27d248..0000000 --- a/doc/html/inherit__graph__6.md5 +++ /dev/null @@ -1 +0,0 @@ -60c20bb30e9a330cedd7bc6b6c1f4393 \ No newline at end of file diff --git a/doc/html/inherit__graph__6.png b/doc/html/inherit__graph__6.png deleted file mode 100644 index 73f3713..0000000 Binary files a/doc/html/inherit__graph__6.png and /dev/null differ diff --git a/doc/html/inherit__graph__7.map b/doc/html/inherit__graph__7.map deleted file mode 100644 index cce5791..0000000 --- a/doc/html/inherit__graph__7.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__7.md5 b/doc/html/inherit__graph__7.md5 deleted file mode 100644 index 0bf1cba..0000000 --- a/doc/html/inherit__graph__7.md5 +++ /dev/null @@ -1 +0,0 @@ -927f0ea7d785113fa9f136a3478f74b4 \ No newline at end of file diff --git a/doc/html/inherit__graph__7.png b/doc/html/inherit__graph__7.png deleted file mode 100644 index 0443a41..0000000 Binary files a/doc/html/inherit__graph__7.png and /dev/null differ diff --git a/doc/html/inherit__graph__8.map b/doc/html/inherit__graph__8.map deleted file mode 100644 index deda59a..0000000 --- a/doc/html/inherit__graph__8.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__8.md5 b/doc/html/inherit__graph__8.md5 deleted file mode 100644 index b16af4c..0000000 --- a/doc/html/inherit__graph__8.md5 +++ /dev/null @@ -1 +0,0 @@ -c307bf54a6c23b68c84db069bd71f6e6 \ No newline at end of file diff --git a/doc/html/inherit__graph__8.png b/doc/html/inherit__graph__8.png deleted file mode 100644 index d6fc914..0000000 Binary files a/doc/html/inherit__graph__8.png and /dev/null differ diff --git a/doc/html/inherit__graph__9.map b/doc/html/inherit__graph__9.map deleted file mode 100644 index 6278422..0000000 --- a/doc/html/inherit__graph__9.map +++ /dev/null @@ -1 +0,0 @@ - diff --git a/doc/html/inherit__graph__9.md5 b/doc/html/inherit__graph__9.md5 deleted file mode 100644 index 39519e3..0000000 --- a/doc/html/inherit__graph__9.md5 +++ /dev/null @@ -1 +0,0 @@ -4dcf81119b4305cdd74545396f134244 \ No newline at end of file diff --git a/doc/html/inherit__graph__9.png b/doc/html/inherit__graph__9.png deleted file mode 100644 index 5686014..0000000 Binary files a/doc/html/inherit__graph__9.png and /dev/null differ diff --git a/doc/html/inherits.html b/doc/html/inherits.html deleted file mode 100644 index 09e5ca4..0000000 --- a/doc/html/inherits.html +++ /dev/null @@ -1,127 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Graphical Class Hierarchy - - - - - -
-

Graphical Class Hierarchy

Go to the textual class hierarchy -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/interfacecFileHandle-members.html b/doc/html/interfacecFileHandle-members.html deleted file mode 100644 index 24c896e..0000000 --- a/doc/html/interfacecFileHandle-members.html +++ /dev/null @@ -1,37 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cFileHandle Member List

This is the complete list of members for cFileHandle, including all inherited members.

- - - - - - -
close()=0cFileHandle [pure virtual]
open(UpnpOpenFileMode mode)=0cFileHandle [pure virtual]
read(char *buf, size_t buflen)=0cFileHandle [pure virtual]
seek(off_t offset, int whence)=0cFileHandle [pure virtual]
write(char *buf, size_t buflen)=0cFileHandle [pure virtual]
~cFileHandle() (defined in cFileHandle)cFileHandle [inline, virtual]

-
Generated on Fri Nov 6 22:22:12 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/livereceiver_8h-source.html b/doc/html/livereceiver_8h-source.html deleted file mode 100644 index 6a47b13..0000000 --- a/doc/html/livereceiver_8h-source.html +++ /dev/null @@ -1,78 +0,0 @@ - - -UPnP/DLNA plugin for VDR: receiver/livereceiver.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/menusetup_8h-source.html b/doc/html/menusetup_8h-source.html deleted file mode 100644 index d60891f..0000000 --- a/doc/html/menusetup_8h-source.html +++ /dev/null @@ -1,70 +0,0 @@ - - -UPnP/DLNA plugin for VDR: misc/menusetup.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/metadata_8h-source.html b/doc/html/metadata_8h-source.html deleted file mode 100644 index 095405b..0000000 --- a/doc/html/metadata_8h-source.html +++ /dev/null @@ -1,108 +0,0 @@ - - -UPnP/DLNA plugin for VDR: database/metadata.h Source File - - - - - -
Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/object_8h-source.html b/doc/html/object_8h-source.html deleted file mode 100644 index 0f6d435..0000000 --- a/doc/html/object_8h-source.html +++ /dev/null @@ -1,498 +0,0 @@ - - -UPnP/DLNA plugin for VDR: database/object.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/recplayer_8h-source.html b/doc/html/recplayer_8h-source.html deleted file mode 100644 index 4dcf279..0000000 --- a/doc/html/recplayer_8h-source.html +++ /dev/null @@ -1,65 +0,0 @@ - - -UPnP/DLNA plugin for VDR: receiver/recplayer.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/resources_8h-source.html b/doc/html/resources_8h-source.html deleted file mode 100644 index cfcf9ca..0000000 --- a/doc/html/resources_8h-source.html +++ /dev/null @@ -1,77 +0,0 @@ - - -UPnP/DLNA plugin for VDR: database/resources.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/search_8h-source.html b/doc/html/search_8h-source.html deleted file mode 100644 index 0ae0475..0000000 --- a/doc/html/search_8h-source.html +++ /dev/null @@ -1,125 +0,0 @@ - - -UPnP/DLNA plugin for VDR: misc/search.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/server_8h-source.html b/doc/html/server_8h-source.html deleted file mode 100644 index 6219996..0000000 --- a/doc/html/server_8h-source.html +++ /dev/null @@ -1,85 +0,0 @@ - - -UPnP/DLNA plugin for VDR: server/server.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structDLNAIconProfile-members.html b/doc/html/structDLNAIconProfile-members.html deleted file mode 100644 index 7e153b4..0000000 --- a/doc/html/structDLNAIconProfile-members.html +++ /dev/null @@ -1,35 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

DLNAIconProfile Member List

This is the complete list of members for DLNAIconProfile, including all inherited members.

- - - - -
bitDepthDLNAIconProfile
heightDLNAIconProfile
mimeDLNAIconProfile
widthDLNAIconProfile

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structDLNAIconProfile.html b/doc/html/structDLNAIconProfile.html deleted file mode 100644 index 1097413..0000000 --- a/doc/html/structDLNAIconProfile.html +++ /dev/null @@ -1,58 +0,0 @@ - - -UPnP/DLNA plugin for VDR: DLNAIconProfile Struct Reference - - - - - -
-

DLNAIconProfile Struct Reference

#include <common.h> -

- -

-List of all members. - - - - - - - - - - - - - - -

Public Attributes

-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
-


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: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structDLNAProfile-members.html b/doc/html/structDLNAProfile-members.html deleted file mode 100644 index 3143e45..0000000 --- a/doc/html/structDLNAProfile-members.html +++ /dev/null @@ -1,33 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

DLNAProfile Member List

This is the complete list of members for DLNAProfile, including all inherited members.

- - -
IDDLNAProfile
mimeDLNAProfile

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structDLNAProfile.html b/doc/html/structDLNAProfile.html deleted file mode 100644 index d1921d2..0000000 --- a/doc/html/structDLNAProfile.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: DLNAProfile Struct Reference - - - - - -
-

DLNAProfile Struct Reference

#include <common.h> -

- -

-List of all members. - - - - - - - - -

Public Attributes

-const char * ID
 the DLNA profile ID
-const char * mime
 the mime type of the resource
-


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: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcClass-members.html b/doc/html/structcClass-members.html deleted file mode 100644 index 35d4575..0000000 --- a/doc/html/structcClass-members.html +++ /dev/null @@ -1,35 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cClass Member List

This is the complete list of members for cClass, including all inherited members.

- - - - -
IDcClass
includeDerivedcClass
operator!=(const cClass &cmp)cClass [inline]
operator==(const cClass &cmp)cClass [inline]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcClass.html b/doc/html/structcClass.html deleted file mode 100644 index bf727d7..0000000 --- a/doc/html/structcClass.html +++ /dev/null @@ -1,108 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cClass Struct Reference - - - - - -
-

cClass Struct Reference

#include <object.h> -

- -

-List of all members. - - - - - - - - - - - - - -

Public Member Functions

bool operator== (const cClass &cmp)
bool operator!= (const cClass &cmp)

Public Attributes

-cString ID
 The upnp class ID.
-bool includeDerived
 flag, to indicate if derived classes are allowed
-


Detailed Description

-Structure of a UPnP Class

-This represents a UPnP Class


Member Function Documentation

- -
-
- - - - - - - - - -
bool cClass::operator!= (const cClass cmp  )  [inline]
-
-
- -

-Compares two classes

-

Parameters:
- - -
cmp the other class to compare with
-
- -
-

- -

-
- - - - - - - - - -
bool cClass::operator== (const cClass cmp  )  [inline]
-
-
- -

-Compares two classes

-

Parameters:
- - -
cmp the other class to compare with
-
- -
-

-


The documentation for this struct was generated from the following file: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcSortCrit-members.html b/doc/html/structcSortCrit-members.html deleted file mode 100644 index e8a5f78..0000000 --- a/doc/html/structcSortCrit-members.html +++ /dev/null @@ -1,33 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cSortCrit Member List

This is the complete list of members for cSortCrit, including all inherited members.

- - -
PropertycSortCrit
SortDescendingcSortCrit

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcSortCrit.html b/doc/html/structcSortCrit.html deleted file mode 100644 index f3b8fb3..0000000 --- a/doc/html/structcSortCrit.html +++ /dev/null @@ -1,50 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cSortCrit Struct Reference - - - - - -
-

cSortCrit Struct Reference

#include <search.h> -

- -

-List of all members. - - - - - - - - -

Public Attributes

-const char * Property
 the Property, which shall be sorted
-bool SortDescending
 sort the objects in descending order
-


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: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcUPnPObjectID-members.html b/doc/html/structcUPnPObjectID-members.html deleted file mode 100644 index 7006890..0000000 --- a/doc/html/structcUPnPObjectID-members.html +++ /dev/null @@ -1,52 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPObjectID Member List

This is the complete list of members for cUPnPObjectID, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
_IDcUPnPObjectID
cUPnPObjectID()cUPnPObjectID [inline]
cUPnPObjectID(long ID)cUPnPObjectID [inline]
cUPnPObjectID(int ID)cUPnPObjectID [inline]
operator int()cUPnPObjectID [inline]
operator long()cUPnPObjectID [inline]
operator unsigned int()cUPnPObjectID [inline]
operator!=(long ID)cUPnPObjectID [inline]
operator!=(int ID)cUPnPObjectID [inline]
operator!=(const cUPnPObjectID &ID)cUPnPObjectID [inline]
operator*()cUPnPObjectID [inline]
operator++()cUPnPObjectID [inline]
operator++(int)cUPnPObjectID [inline]
operator--(int)cUPnPObjectID [inline]
operator--()cUPnPObjectID [inline]
operator=(long ID)cUPnPObjectID [inline]
operator=(int ID)cUPnPObjectID [inline]
operator=(const cUPnPObjectID &ID)cUPnPObjectID [inline]
operator==(long ID)cUPnPObjectID [inline]
operator==(int ID)cUPnPObjectID [inline]
operator==(const cUPnPObjectID &ID)cUPnPObjectID [inline]

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcUPnPObjectID.html b/doc/html/structcUPnPObjectID.html deleted file mode 100644 index f67e6e9..0000000 --- a/doc/html/structcUPnPObjectID.html +++ /dev/null @@ -1,540 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPObjectID Struct Reference - - - - - -
-

cUPnPObjectID Struct Reference

#include <object.h> -

- -

-List of all members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 cUPnPObjectID ()
 cUPnPObjectID (long ID)
 cUPnPObjectID (int ID)
cUPnPObjectIDoperator= (long ID)
cUPnPObjectIDoperator= (int ID)
cUPnPObjectIDoperator= (const cUPnPObjectID &ID)
cUPnPObjectIDoperator++ ()
cUPnPObjectID operator++ (int)
cUPnPObjectID operator-- (int)
cUPnPObjectIDoperator-- ()
bool operator!= (long ID)
bool operator== (long ID)
bool operator!= (int ID)
bool operator== (int ID)
bool operator!= (const cUPnPObjectID &ID)
bool operator== (const cUPnPObjectID &ID)
 operator unsigned int ()
 operator int ()
 operator long ()
const char * operator* ()

Public Attributes

-int _ID
 The UPnP Object ID.
-


Detailed Description

-UPnP Object ID

-This is a UPnP Object ID representation.


Constructor & Destructor Documentation

- -
-
- - - - - - - - -
cUPnPObjectID::cUPnPObjectID (  )  [inline]
-
-
- -

-Constructor

-Creates invalid ID -

-

- -

-
- - - - - - - - - -
cUPnPObjectID::cUPnPObjectID (long  ID  )  [inline]
-
-
- -

-Constructor

-Creates from long integer

Parameters:
- - -
ID new ID
-
- -
-

- -

-
- - - - - - - - - -
cUPnPObjectID::cUPnPObjectID (int  ID  )  [inline]
-
-
- -

-Constructor

-Creates from integer

Parameters:
- - -
ID new ID
-
- -
-

-


Member Function Documentation

- -
-
- - - - - - - - -
cUPnPObjectID::operator int (  )  [inline]
-
-
- -

-Casts to int -

-

- -

-
- - - - - - - - -
cUPnPObjectID::operator long (  )  [inline]
-
-
- -

-Casts to long -

-

- -

-
- - - - - - - - -
cUPnPObjectID::operator unsigned int (  )  [inline]
-
-
- -

-Casts to unsigned int -

-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator!= (const cUPnPObjectID ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID compare with this ID
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator!= (int  ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID compare with this ID
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator!= (long  ID  )  [inline]
-
-
- -

-Not equal

Parameters:
- - -
ID compare with this ID
-
- -
-

- -

-
- - - - - - - - -
const char* cUPnPObjectID::operator* (  )  [inline]
-
-
- -

-Casts to string -

-

- -

-
- - - - - - - - - -
cUPnPObjectID cUPnPObjectID::operator++ (int   )  [inline]
-
-
- -

-Post increment the ID -

-

- -

-
- - - - - - - - -
cUPnPObjectID& cUPnPObjectID::operator++ (  )  [inline]
-
-
- -

-Pre increment the ID -

-

- -

-
- - - - - - - - -
cUPnPObjectID& cUPnPObjectID::operator-- (  )  [inline]
-
-
- -

-Pre decrement the ID -

-

- -

-
- - - - - - - - - -
cUPnPObjectID cUPnPObjectID::operator-- (int   )  [inline]
-
-
- -

-Post decrement the ID -

-

- -

-
- - - - - - - - - -
cUPnPObjectID& cUPnPObjectID::operator= (const cUPnPObjectID ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID new ID
-
- -
-

- -

-
- - - - - - - - - -
cUPnPObjectID& cUPnPObjectID::operator= (int  ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID new ID
-
- -
-

- -

-
- - - - - - - - - -
cUPnPObjectID& cUPnPObjectID::operator= (long  ID  )  [inline]
-
-
- -

-Set the object ID

Parameters:
- - -
ID new ID
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator== (const cUPnPObjectID ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID compare with this ID
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator== (int  ID  )  [inline]
-
-
- -

-This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
- - -
ID compare with this ID
-
- -
-

- -

-
- - - - - - - - - -
bool cUPnPObjectID::operator== (long  ID  )  [inline]
-
-
- -

-Equal

Parameters:
- - -
ID compare with this ID
-
- -
-

-


The documentation for this struct was generated from the following file: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcUPnPResultSet-members.html b/doc/html/structcUPnPResultSet-members.html deleted file mode 100644 index 0a6dcf8..0000000 --- a/doc/html/structcUPnPResultSet-members.html +++ /dev/null @@ -1,34 +0,0 @@ - - -UPnP/DLNA plugin for VDR: Member List - - - - - -
-

cUPnPResultSet Member List

This is the complete list of members for cUPnPResultSet, including all inherited members.

- - - -
mNumberReturnedcUPnPResultSet
mResultcUPnPResultSet
mTotalMatchescUPnPResultSet

-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/structcUPnPResultSet.html b/doc/html/structcUPnPResultSet.html deleted file mode 100644 index 60917ee..0000000 --- a/doc/html/structcUPnPResultSet.html +++ /dev/null @@ -1,54 +0,0 @@ - - -UPnP/DLNA plugin for VDR: cUPnPResultSet Struct Reference - - - - - -
-

cUPnPResultSet Struct Reference

#include <metadata.h> -

- -

-List of all members. - - - - - - - - - - - -

Public Attributes

-int mNumberReturned
 The number of returned matches.
-int mTotalMatches
 The total amount of matches.
-const char * mResult
 The DIDL-Lite fragment.
-


Detailed Description

-The result set of a request

-This contains the results of a previous Browse or Search request.


The documentation for this struct was generated from the following file: -
-
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif deleted file mode 100644 index 0d62348..0000000 Binary files a/doc/html/tab_b.gif and /dev/null differ diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif deleted file mode 100644 index 9b1e633..0000000 Binary files a/doc/html/tab_l.gif and /dev/null differ diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif deleted file mode 100644 index ce9dd9f..0000000 Binary files a/doc/html/tab_r.gif and /dev/null differ diff --git a/doc/html/tabs.css b/doc/html/tabs.css deleted file mode 100644 index ab02c62..0000000 --- a/doc/html/tabs.css +++ /dev/null @@ -1,105 +0,0 @@ -/* 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 deleted file mode 100644 index 7cdf339..0000000 --- a/doc/html/upnp_8h-source.html +++ /dev/null @@ -1,69 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnp.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/upnpservice_8h-source.html b/doc/html/upnpservice_8h-source.html deleted file mode 100644 index b202158..0000000 --- a/doc/html/upnpservice_8h-source.html +++ /dev/null @@ -1,71 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnpcomponents/upnpservice.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/upnpwebserver_8h-source.html b/doc/html/upnpwebserver_8h-source.html deleted file mode 100644 index 774cf3f..0000000 --- a/doc/html/upnpwebserver_8h-source.html +++ /dev/null @@ -1,72 +0,0 @@ - - -UPnP/DLNA plugin for VDR: upnpcomponents/upnpwebserver.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/html/util_8h-source.html b/doc/html/util_8h-source.html deleted file mode 100644 index a2d6a8c..0000000 --- a/doc/html/util_8h-source.html +++ /dev/null @@ -1,79 +0,0 @@ - - -UPnP/DLNA plugin for VDR: misc/util.h Source File - - - - - -
Generated on Sun Nov 8 15:44:09 2009 for UPnP/DLNA plugin for VDR by  - -doxygen 1.5.8
- - diff --git a/doc/latex/FreeSans.ttf b/doc/latex/FreeSans.ttf deleted file mode 100644 index b550b90..0000000 Binary files a/doc/latex/FreeSans.ttf and /dev/null differ diff --git a/doc/latex/Makefile b/doc/latex/Makefile deleted file mode 100644 index 8b7c89a..0000000 --- a/doc/latex/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index e09727e..0000000 --- a/doc/latex/annotated.tex +++ /dev/null @@ -1,49 +0,0 @@ -\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 deleted file mode 100644 index f76f078..0000000 --- a/doc/latex/classcAudioVideoDetector.tex +++ /dev/null @@ -1,45 +0,0 @@ -\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 deleted file mode 100644 index 81813c0..0000000 --- a/doc/latex/classcConnectionManager.tex +++ /dev/null @@ -1,124 +0,0 @@ -\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 deleted file mode 100644 index 064c4bf..0000000 --- a/doc/latex/classcConnectionManager__coll__graph.eps +++ /dev/null @@ -1,470 +0,0 @@ -%!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 deleted file mode 100644 index 0cb29f8..0000000 --- a/doc/latex/classcConnectionManager__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a14d900002db9aae5ba9e46e07ca6a5 \ No newline at end of file diff --git a/doc/latex/classcConnectionManager__coll__graph.pdf b/doc/latex/classcConnectionManager__coll__graph.pdf deleted file mode 100644 index 2c1bbb3..0000000 Binary files a/doc/latex/classcConnectionManager__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcConnectionManager__inherit__graph.eps b/doc/latex/classcConnectionManager__inherit__graph.eps deleted file mode 100644 index a1ec658..0000000 --- a/doc/latex/classcConnectionManager__inherit__graph.eps +++ /dev/null @@ -1,358 +0,0 @@ -%!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 deleted file mode 100644 index a50b5b8..0000000 --- a/doc/latex/classcConnectionManager__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b8652d9aa90e89790fbf20c36a8fd813 \ No newline at end of file diff --git a/doc/latex/classcConnectionManager__inherit__graph.pdf b/doc/latex/classcConnectionManager__inherit__graph.pdf deleted file mode 100644 index 5b05619..0000000 Binary files a/doc/latex/classcConnectionManager__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcContentDirectory.tex b/doc/latex/classcContentDirectory.tex deleted file mode 100644 index 02a18cb..0000000 --- a/doc/latex/classcContentDirectory.tex +++ /dev/null @@ -1,124 +0,0 @@ -\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 deleted file mode 100644 index 7129dfa..0000000 --- a/doc/latex/classcContentDirectory__coll__graph.eps +++ /dev/null @@ -1,1213 +0,0 @@ -%!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 deleted file mode 100644 index 4c5d93b..0000000 --- a/doc/latex/classcContentDirectory__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -41a4a52f56f8d50957a0b7f8f30c65f8 \ No newline at end of file diff --git a/doc/latex/classcContentDirectory__coll__graph.pdf b/doc/latex/classcContentDirectory__coll__graph.pdf deleted file mode 100644 index ebd1782..0000000 Binary files a/doc/latex/classcContentDirectory__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcContentDirectory__inherit__graph.eps b/doc/latex/classcContentDirectory__inherit__graph.eps deleted file mode 100644 index bbd1b5a..0000000 --- a/doc/latex/classcContentDirectory__inherit__graph.eps +++ /dev/null @@ -1,340 +0,0 @@ -%!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 deleted file mode 100644 index 4145de7..0000000 --- a/doc/latex/classcContentDirectory__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5fcc1fbcda0406ed6d97b8ca731c314f \ No newline at end of file diff --git a/doc/latex/classcContentDirectory__inherit__graph.pdf b/doc/latex/classcContentDirectory__inherit__graph.pdf deleted file mode 100644 index 5bb7a2e..0000000 Binary files a/doc/latex/classcContentDirectory__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcDlna.tex b/doc/latex/classcDlna.tex deleted file mode 100644 index 5828aa6..0000000 --- a/doc/latex/classcDlna.tex +++ /dev/null @@ -1,202 +0,0 @@ -\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 deleted file mode 100644 index 405f7bd..0000000 --- a/doc/latex/classcDlna__coll__graph.eps +++ /dev/null @@ -1,312 +0,0 @@ -%!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 deleted file mode 100644 index dda90dc..0000000 --- a/doc/latex/classcDlna__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f9e7a97a851da74b0c118baed12165ba \ No newline at end of file diff --git a/doc/latex/classcDlna__coll__graph.pdf b/doc/latex/classcDlna__coll__graph.pdf deleted file mode 100644 index 7b8c472..0000000 Binary files a/doc/latex/classcDlna__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcFileHandle.eps b/doc/latex/classcFileHandle.eps deleted file mode 100644 index 0f4aba7..0000000 --- a/doc/latex/classcFileHandle.eps +++ /dev/null @@ -1,197 +0,0 @@ -%!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 deleted file mode 100644 index 265f7d0..0000000 Binary files a/doc/latex/classcFileHandle.pdf and /dev/null differ diff --git a/doc/latex/classcFileHandle.tex b/doc/latex/classcFileHandle.tex deleted file mode 100644 index 45a47a9..0000000 --- a/doc/latex/classcFileHandle.tex +++ /dev/null @@ -1,168 +0,0 @@ -\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 deleted file mode 100644 index faa4693..0000000 --- a/doc/latex/classcFileHandle__inherit__graph.eps +++ /dev/null @@ -1,462 +0,0 @@ -%!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 deleted file mode 100644 index 34d1eeb..0000000 --- a/doc/latex/classcFileHandle__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -adddfff4f4a023c276e668f4f33a9497 \ No newline at end of file diff --git a/doc/latex/classcFileHandle__inherit__graph.pdf b/doc/latex/classcFileHandle__inherit__graph.pdf deleted file mode 100644 index 131f9df..0000000 Binary files a/doc/latex/classcFileHandle__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcFilterCriteria.tex b/doc/latex/classcFilterCriteria.tex deleted file mode 100644 index 13d9216..0000000 --- a/doc/latex/classcFilterCriteria.tex +++ /dev/null @@ -1,43 +0,0 @@ -\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 deleted file mode 100644 index 015ba18..0000000 --- a/doc/latex/classcLiveReceiver.eps +++ /dev/null @@ -1,197 +0,0 @@ -%!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 deleted file mode 100644 index 5971ba6..0000000 Binary files a/doc/latex/classcLiveReceiver.pdf and /dev/null differ diff --git a/doc/latex/classcLiveReceiver.tex b/doc/latex/classcLiveReceiver.tex deleted file mode 100644 index 53fc497..0000000 --- a/doc/latex/classcLiveReceiver.tex +++ /dev/null @@ -1,229 +0,0 @@ -\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 deleted file mode 100644 index e9f44e7..0000000 --- a/doc/latex/classcLiveReceiver__coll__graph.eps +++ /dev/null @@ -1,355 +0,0 @@ -%!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 deleted file mode 100644 index eb7c6c8..0000000 --- a/doc/latex/classcLiveReceiver__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -79e6d45387ad15618ce17cf2646a3159 \ No newline at end of file diff --git a/doc/latex/classcLiveReceiver__coll__graph.pdf b/doc/latex/classcLiveReceiver__coll__graph.pdf deleted file mode 100644 index d09cd5e..0000000 Binary files a/doc/latex/classcLiveReceiver__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcLiveReceiver__inherit__graph.eps b/doc/latex/classcLiveReceiver__inherit__graph.eps deleted file mode 100644 index e9f44e7..0000000 --- a/doc/latex/classcLiveReceiver__inherit__graph.eps +++ /dev/null @@ -1,355 +0,0 @@ -%!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 deleted file mode 100644 index eb7c6c8..0000000 --- a/doc/latex/classcLiveReceiver__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -79e6d45387ad15618ce17cf2646a3159 \ No newline at end of file diff --git a/doc/latex/classcLiveReceiver__inherit__graph.pdf b/doc/latex/classcLiveReceiver__inherit__graph.pdf deleted file mode 100644 index 5e76fb7..0000000 Binary files a/doc/latex/classcLiveReceiver__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcMediaDatabase.tex b/doc/latex/classcMediaDatabase.tex deleted file mode 100644 index d159721..0000000 --- a/doc/latex/classcMediaDatabase.tex +++ /dev/null @@ -1,205 +0,0 @@ -\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 deleted file mode 100644 index 79d0ce1..0000000 --- a/doc/latex/classcMediaDatabase__coll__graph.eps +++ /dev/null @@ -1,1029 +0,0 @@ -%!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 deleted file mode 100644 index 07e0ff6..0000000 --- a/doc/latex/classcMediaDatabase__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ca1d349b85a47228204749487a911f9b \ No newline at end of file diff --git a/doc/latex/classcMediaDatabase__coll__graph.pdf b/doc/latex/classcMediaDatabase__coll__graph.pdf deleted file mode 100644 index 0d3fa39..0000000 Binary files a/doc/latex/classcMediaDatabase__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcMediatorInterface.tex b/doc/latex/classcMediatorInterface.tex deleted file mode 100644 index 20f7b00..0000000 --- a/doc/latex/classcMediatorInterface.tex +++ /dev/null @@ -1,145 +0,0 @@ -\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 deleted file mode 100644 index 7c11f18..0000000 --- a/doc/latex/classcMediatorInterface__inherit__graph.eps +++ /dev/null @@ -1,710 +0,0 @@ -%!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 deleted file mode 100644 index a120bc8..0000000 --- a/doc/latex/classcMediatorInterface__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2e30e73ad0488be630d20ae228f8772a \ No newline at end of file diff --git a/doc/latex/classcMediatorInterface__inherit__graph.pdf b/doc/latex/classcMediatorInterface__inherit__graph.pdf deleted file mode 100644 index 0ea5687..0000000 Binary files a/doc/latex/classcMediatorInterface__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcMenuSetupUPnP.tex b/doc/latex/classcMenuSetupUPnP.tex deleted file mode 100644 index 858d8ad..0000000 --- a/doc/latex/classcMenuSetupUPnP.tex +++ /dev/null @@ -1,88 +0,0 @@ -\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 deleted file mode 100644 index b3371df..0000000 --- a/doc/latex/classcMenuSetupUPnP__coll__graph.eps +++ /dev/null @@ -1,1954 +0,0 @@ -%!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 deleted file mode 100644 index 49f5a96..0000000 --- a/doc/latex/classcMenuSetupUPnP__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -08c222cc27eabcddc938424d60520520 \ No newline at end of file diff --git a/doc/latex/classcMenuSetupUPnP__coll__graph.pdf b/doc/latex/classcMenuSetupUPnP__coll__graph.pdf deleted file mode 100644 index e6d69d6..0000000 Binary files a/doc/latex/classcMenuSetupUPnP__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcPathParser.tex b/doc/latex/classcPathParser.tex deleted file mode 100644 index b7768d6..0000000 --- a/doc/latex/classcPathParser.tex +++ /dev/null @@ -1,47 +0,0 @@ -\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 deleted file mode 100644 index 4f4deb0..0000000 --- a/doc/latex/classcPluginUpnp.tex +++ /dev/null @@ -1,212 +0,0 @@ -\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 deleted file mode 100644 index ceccf0c..0000000 --- a/doc/latex/classcPluginUpnp__coll__graph.eps +++ /dev/null @@ -1,1942 +0,0 @@ -%!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 deleted file mode 100644 index 3a3d2c8..0000000 --- a/doc/latex/classcPluginUpnp__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f738b9bddda4749b550c92286f91f17c \ No newline at end of file diff --git a/doc/latex/classcPluginUpnp__coll__graph.pdf b/doc/latex/classcPluginUpnp__coll__graph.pdf deleted file mode 100644 index fe2660e..0000000 Binary files a/doc/latex/classcPluginUpnp__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcRecordingPlayer.tex b/doc/latex/classcRecordingPlayer.tex deleted file mode 100644 index 2077d1a..0000000 --- a/doc/latex/classcRecordingPlayer.tex +++ /dev/null @@ -1,175 +0,0 @@ -\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 deleted file mode 100644 index 2b938e9..0000000 --- a/doc/latex/classcRecordingPlayer__coll__graph.eps +++ /dev/null @@ -1,358 +0,0 @@ -%!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 deleted file mode 100644 index cc3ce9b..0000000 --- a/doc/latex/classcRecordingPlayer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -68610d6975719ba0b04bace8c3b2ba13 \ No newline at end of file diff --git a/doc/latex/classcRecordingPlayer__coll__graph.pdf b/doc/latex/classcRecordingPlayer__coll__graph.pdf deleted file mode 100644 index 69a65fa..0000000 Binary files a/doc/latex/classcRecordingPlayer__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcRecordingPlayer__inherit__graph.eps b/doc/latex/classcRecordingPlayer__inherit__graph.eps deleted file mode 100644 index 2b938e9..0000000 --- a/doc/latex/classcRecordingPlayer__inherit__graph.eps +++ /dev/null @@ -1,358 +0,0 @@ -%!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 deleted file mode 100644 index cc3ce9b..0000000 --- a/doc/latex/classcRecordingPlayer__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -68610d6975719ba0b04bace8c3b2ba13 \ No newline at end of file diff --git a/doc/latex/classcRecordingPlayer__inherit__graph.pdf b/doc/latex/classcRecordingPlayer__inherit__graph.pdf deleted file mode 100644 index 51f0e80..0000000 Binary files a/doc/latex/classcRecordingPlayer__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcRegisteredProfile.tex b/doc/latex/classcRegisteredProfile.tex deleted file mode 100644 index 40a54b6..0000000 --- a/doc/latex/classcRegisteredProfile.tex +++ /dev/null @@ -1,31 +0,0 @@ -\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 deleted file mode 100644 index 38219da..0000000 --- a/doc/latex/classcRegisteredProfile__coll__graph.eps +++ /dev/null @@ -1,333 +0,0 @@ -%!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 deleted file mode 100644 index 302aefd..0000000 --- a/doc/latex/classcRegisteredProfile__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -afb1190dc1af76bc45e437388b7c2723 \ No newline at end of file diff --git a/doc/latex/classcRegisteredProfile__coll__graph.pdf b/doc/latex/classcRegisteredProfile__coll__graph.pdf deleted file mode 100644 index 6f84619..0000000 Binary files a/doc/latex/classcRegisteredProfile__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcRow.tex b/doc/latex/classcRow.tex deleted file mode 100644 index 91661ff..0000000 --- a/doc/latex/classcRow.tex +++ /dev/null @@ -1,92 +0,0 @@ -\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 deleted file mode 100644 index 0d83296..0000000 --- a/doc/latex/classcRows.tex +++ /dev/null @@ -1,64 +0,0 @@ -\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 deleted file mode 100644 index 9b1b4aa..0000000 --- a/doc/latex/classcRows__coll__graph.eps +++ /dev/null @@ -1,342 +0,0 @@ -%!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 deleted file mode 100644 index 1c1a46b..0000000 --- a/doc/latex/classcRows__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -63fb3682c98623486997b45e8f41d1ce \ No newline at end of file diff --git a/doc/latex/classcRows__coll__graph.pdf b/doc/latex/classcRows__coll__graph.pdf deleted file mode 100644 index a65da19..0000000 Binary files a/doc/latex/classcRows__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcSQLiteDatabase.tex b/doc/latex/classcSQLiteDatabase.tex deleted file mode 100644 index 78bb93d..0000000 --- a/doc/latex/classcSQLiteDatabase.tex +++ /dev/null @@ -1,224 +0,0 @@ -\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 deleted file mode 100644 index 217d343..0000000 --- a/doc/latex/classcSQLiteDatabase__coll__graph.eps +++ /dev/null @@ -1,558 +0,0 @@ -%!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 deleted file mode 100644 index a747508..0000000 --- a/doc/latex/classcSQLiteDatabase__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2a59a42580c66e69e970d4e804e12ff6 \ No newline at end of file diff --git a/doc/latex/classcSQLiteDatabase__coll__graph.pdf b/doc/latex/classcSQLiteDatabase__coll__graph.pdf deleted file mode 100644 index 4e81ac0..0000000 Binary files a/doc/latex/classcSQLiteDatabase__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcSortCriteria.tex b/doc/latex/classcSortCriteria.tex deleted file mode 100644 index 8f6e461..0000000 --- a/doc/latex/classcSortCriteria.tex +++ /dev/null @@ -1,52 +0,0 @@ -\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 deleted file mode 100644 index ca19245..0000000 --- a/doc/latex/classcSortCriteria__coll__graph.eps +++ /dev/null @@ -1,339 +0,0 @@ -%!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 deleted file mode 100644 index 4c7af3b..0000000 --- a/doc/latex/classcSortCriteria__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -32c7bed7fc4fe5597e8997678b6f053a \ No newline at end of file diff --git a/doc/latex/classcSortCriteria__coll__graph.pdf b/doc/latex/classcSortCriteria__coll__graph.pdf deleted file mode 100644 index 92032c5..0000000 Binary files a/doc/latex/classcSortCriteria__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassContainer.tex b/doc/latex/classcUPnPClassContainer.tex deleted file mode 100644 index 1dd99cd..0000000 --- a/doc/latex/classcUPnPClassContainer.tex +++ /dev/null @@ -1,603 +0,0 @@ -\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 deleted file mode 100644 index 1e243b4..0000000 --- a/doc/latex/classcUPnPClassContainer__coll__graph.eps +++ /dev/null @@ -1,793 +0,0 @@ -%!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 deleted file mode 100644 index 35cd354..0000000 --- a/doc/latex/classcUPnPClassContainer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a7c0642935564d658a0cf77fc7ddaf6d \ No newline at end of file diff --git a/doc/latex/classcUPnPClassContainer__coll__graph.pdf b/doc/latex/classcUPnPClassContainer__coll__graph.pdf deleted file mode 100644 index ca2639b..0000000 Binary files a/doc/latex/classcUPnPClassContainer__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassContainer__inherit__graph.eps b/doc/latex/classcUPnPClassContainer__inherit__graph.eps deleted file mode 100644 index 886ca64..0000000 --- a/doc/latex/classcUPnPClassContainer__inherit__graph.eps +++ /dev/null @@ -1,532 +0,0 @@ -%!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 deleted file mode 100644 index 1d1dfab..0000000 --- a/doc/latex/classcUPnPClassContainer__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -88df770daffc310468c44ed53ff385e5 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassContainer__inherit__graph.pdf b/doc/latex/classcUPnPClassContainer__inherit__graph.pdf deleted file mode 100644 index a1a222a..0000000 Binary files a/doc/latex/classcUPnPClassContainer__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassItem.tex b/doc/latex/classcUPnPClassItem.tex deleted file mode 100644 index 684a58e..0000000 --- a/doc/latex/classcUPnPClassItem.tex +++ /dev/null @@ -1,223 +0,0 @@ -\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 deleted file mode 100644 index 65bf127..0000000 --- a/doc/latex/classcUPnPClassItem__coll__graph.eps +++ /dev/null @@ -1,670 +0,0 @@ -%!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 deleted file mode 100644 index fd466b2..0000000 --- a/doc/latex/classcUPnPClassItem__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bc72a9d0eb50d57f765237b821162355 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassItem__coll__graph.pdf b/doc/latex/classcUPnPClassItem__coll__graph.pdf deleted file mode 100644 index 3b4ea44..0000000 Binary files a/doc/latex/classcUPnPClassItem__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassItem__inherit__graph.eps b/doc/latex/classcUPnPClassItem__inherit__graph.eps deleted file mode 100644 index 3443dc3..0000000 --- a/doc/latex/classcUPnPClassItem__inherit__graph.eps +++ /dev/null @@ -1,805 +0,0 @@ -%!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 deleted file mode 100644 index 0c56d0c..0000000 --- a/doc/latex/classcUPnPClassItem__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cc1bfa94328c0135f781577c41fcf983 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassItem__inherit__graph.pdf b/doc/latex/classcUPnPClassItem__inherit__graph.pdf deleted file mode 100644 index 2c61078..0000000 Binary files a/doc/latex/classcUPnPClassItem__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassMovie.tex b/doc/latex/classcUPnPClassMovie.tex deleted file mode 100644 index b4fe81a..0000000 --- a/doc/latex/classcUPnPClassMovie.tex +++ /dev/null @@ -1,234 +0,0 @@ -\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 deleted file mode 100644 index 65a1be4..0000000 --- a/doc/latex/classcUPnPClassMovie__coll__graph.eps +++ /dev/null @@ -1,914 +0,0 @@ -%!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 deleted file mode 100644 index b036bb4..0000000 --- a/doc/latex/classcUPnPClassMovie__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a747d9c456282a36b85fece806f6a322 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassMovie__coll__graph.pdf b/doc/latex/classcUPnPClassMovie__coll__graph.pdf deleted file mode 100644 index 2a27229..0000000 Binary files a/doc/latex/classcUPnPClassMovie__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassMovie__inherit__graph.eps b/doc/latex/classcUPnPClassMovie__inherit__graph.eps deleted file mode 100644 index cba13f7..0000000 --- a/doc/latex/classcUPnPClassMovie__inherit__graph.eps +++ /dev/null @@ -1,701 +0,0 @@ -%!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 deleted file mode 100644 index 1fbaf25..0000000 --- a/doc/latex/classcUPnPClassMovie__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c38fca23577f1912f80686eaf6e8e661 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassMovie__inherit__graph.pdf b/doc/latex/classcUPnPClassMovie__inherit__graph.pdf deleted file mode 100644 index bc5346a..0000000 Binary files a/doc/latex/classcUPnPClassMovie__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassObject.tex b/doc/latex/classcUPnPClassObject.tex deleted file mode 100644 index 499b2ec..0000000 --- a/doc/latex/classcUPnPClassObject.tex +++ /dev/null @@ -1,703 +0,0 @@ -\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 deleted file mode 100644 index 53b093f..0000000 --- a/doc/latex/classcUPnPClassObject__coll__graph.eps +++ /dev/null @@ -1,550 +0,0 @@ -%!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 deleted file mode 100644 index 84a4723..0000000 --- a/doc/latex/classcUPnPClassObject__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e9c936d9185c37f0b06a260624d12ef2 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassObject__coll__graph.pdf b/doc/latex/classcUPnPClassObject__coll__graph.pdf deleted file mode 100644 index 689888e..0000000 Binary files a/doc/latex/classcUPnPClassObject__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassObject__inherit__graph.eps b/doc/latex/classcUPnPClassObject__inherit__graph.eps deleted file mode 100644 index d870129..0000000 --- a/doc/latex/classcUPnPClassObject__inherit__graph.eps +++ /dev/null @@ -1,963 +0,0 @@ -%!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 deleted file mode 100644 index 12512da..0000000 --- a/doc/latex/classcUPnPClassObject__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -467ce70c6b3ae8b69351ecd7ef1c5dd7 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassObject__inherit__graph.pdf b/doc/latex/classcUPnPClassObject__inherit__graph.pdf deleted file mode 100644 index 85fa79a..0000000 Binary files a/doc/latex/classcUPnPClassObject__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassVideoBroadcast.tex b/doc/latex/classcUPnPClassVideoBroadcast.tex deleted file mode 100644 index 608c360..0000000 --- a/doc/latex/classcUPnPClassVideoBroadcast.tex +++ /dev/null @@ -1,308 +0,0 @@ -\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 deleted file mode 100644 index 364bbc5..0000000 --- a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.eps +++ /dev/null @@ -1,932 +0,0 @@ -%!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 deleted file mode 100644 index aeb2413..0000000 --- a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3401dfefa7c9887d221b193a70544bd6 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf b/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf deleted file mode 100644 index 087b604..0000000 Binary files a/doc/latex/classcUPnPClassVideoBroadcast__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps deleted file mode 100644 index 0b76999..0000000 --- a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.eps +++ /dev/null @@ -1,719 +0,0 @@ -%!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 deleted file mode 100644 index 2856db7..0000000 --- a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7b743fdb2399dbeedeb6c5ac33cb36b6 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf b/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf deleted file mode 100644 index b2b61a1..0000000 Binary files a/doc/latex/classcUPnPClassVideoBroadcast__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassVideoItem.tex b/doc/latex/classcUPnPClassVideoItem.tex deleted file mode 100644 index efa4d8e..0000000 --- a/doc/latex/classcUPnPClassVideoItem.tex +++ /dev/null @@ -1,572 +0,0 @@ -\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 deleted file mode 100644 index 28e6fbc..0000000 --- a/doc/latex/classcUPnPClassVideoItem__coll__graph.eps +++ /dev/null @@ -1,828 +0,0 @@ -%!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 deleted file mode 100644 index f7176bd..0000000 --- a/doc/latex/classcUPnPClassVideoItem__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -218316306bc023ce2926ccb0b9ed3de6 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf b/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf deleted file mode 100644 index 611fc9f..0000000 Binary files a/doc/latex/classcUPnPClassVideoItem__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps b/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps deleted file mode 100644 index 618c53e..0000000 --- a/doc/latex/classcUPnPClassVideoItem__inherit__graph.eps +++ /dev/null @@ -1,805 +0,0 @@ -%!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 deleted file mode 100644 index 91f4e66..0000000 --- a/doc/latex/classcUPnPClassVideoItem__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -35e3a6bd8714a7cfdc39bbcf22c2a310 \ No newline at end of file diff --git a/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf b/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf deleted file mode 100644 index 86be572..0000000 Binary files a/doc/latex/classcUPnPClassVideoItem__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPConfig.tex b/doc/latex/classcUPnPConfig.tex deleted file mode 100644 index f62399e..0000000 --- a/doc/latex/classcUPnPConfig.tex +++ /dev/null @@ -1,120 +0,0 @@ -\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 deleted file mode 100644 index 22b74c0..0000000 --- a/doc/latex/classcUPnPConfig__coll__graph.eps +++ /dev/null @@ -1,303 +0,0 @@ -%!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 deleted file mode 100644 index b1a6dfb..0000000 --- a/doc/latex/classcUPnPConfig__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -465180009ac14e0fa37230ad2881e5f3 \ No newline at end of file diff --git a/doc/latex/classcUPnPConfig__coll__graph.pdf b/doc/latex/classcUPnPConfig__coll__graph.pdf deleted file mode 100644 index b4a24ae..0000000 Binary files a/doc/latex/classcUPnPConfig__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPContainerMediator.tex b/doc/latex/classcUPnPContainerMediator.tex deleted file mode 100644 index 04800d4..0000000 --- a/doc/latex/classcUPnPContainerMediator.tex +++ /dev/null @@ -1,153 +0,0 @@ -\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 deleted file mode 100644 index 67c6fb0..0000000 --- a/doc/latex/classcUPnPContainerMediator__coll__graph.eps +++ /dev/null @@ -1,1323 +0,0 @@ -%!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 deleted file mode 100644 index e9a18f3..0000000 --- a/doc/latex/classcUPnPContainerMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7dca813e69c10af346e4a6229f3084f7 \ No newline at end of file diff --git a/doc/latex/classcUPnPContainerMediator__coll__graph.pdf b/doc/latex/classcUPnPContainerMediator__coll__graph.pdf deleted file mode 100644 index 7693398..0000000 Binary files a/doc/latex/classcUPnPContainerMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPContainerMediator__inherit__graph.eps b/doc/latex/classcUPnPContainerMediator__inherit__graph.eps deleted file mode 100644 index b10e235..0000000 --- a/doc/latex/classcUPnPContainerMediator__inherit__graph.eps +++ /dev/null @@ -1,414 +0,0 @@ -%!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 deleted file mode 100644 index 580ce2b..0000000 --- a/doc/latex/classcUPnPContainerMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6ee334e11cb0aba8d02f895faa511946 \ No newline at end of file diff --git a/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf b/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf deleted file mode 100644 index d44d098..0000000 Binary files a/doc/latex/classcUPnPContainerMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPItemMediator.tex b/doc/latex/classcUPnPItemMediator.tex deleted file mode 100644 index 9bb71d1..0000000 --- a/doc/latex/classcUPnPItemMediator.tex +++ /dev/null @@ -1,161 +0,0 @@ -\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 deleted file mode 100644 index c951a09..0000000 --- a/doc/latex/classcUPnPItemMediator__coll__graph.eps +++ /dev/null @@ -1,1323 +0,0 @@ -%!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 deleted file mode 100644 index e4ba6a7..0000000 --- a/doc/latex/classcUPnPItemMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -13e0d9848be93022f9f3833133bf074e \ No newline at end of file diff --git a/doc/latex/classcUPnPItemMediator__coll__graph.pdf b/doc/latex/classcUPnPItemMediator__coll__graph.pdf deleted file mode 100644 index b4e7f5c..0000000 Binary files a/doc/latex/classcUPnPItemMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPItemMediator__inherit__graph.eps b/doc/latex/classcUPnPItemMediator__inherit__graph.eps deleted file mode 100644 index 615955e..0000000 --- a/doc/latex/classcUPnPItemMediator__inherit__graph.eps +++ /dev/null @@ -1,636 +0,0 @@ -%!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 deleted file mode 100644 index ad900fc..0000000 --- a/doc/latex/classcUPnPItemMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -62d7954a9600eda360dc5302cbca5820 \ No newline at end of file diff --git a/doc/latex/classcUPnPItemMediator__inherit__graph.pdf b/doc/latex/classcUPnPItemMediator__inherit__graph.pdf deleted file mode 100644 index 36f1073..0000000 Binary files a/doc/latex/classcUPnPItemMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPMovieMediator.tex b/doc/latex/classcUPnPMovieMediator.tex deleted file mode 100644 index 7fe459f..0000000 --- a/doc/latex/classcUPnPMovieMediator.tex +++ /dev/null @@ -1,153 +0,0 @@ -\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 deleted file mode 100644 index ec5ccaf..0000000 --- a/doc/latex/classcUPnPMovieMediator__coll__graph.eps +++ /dev/null @@ -1,1471 +0,0 @@ -%!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 deleted file mode 100644 index 71c32d7..0000000 --- a/doc/latex/classcUPnPMovieMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -43b6a14ee43308bbae8f5b88071e2c70 \ No newline at end of file diff --git a/doc/latex/classcUPnPMovieMediator__coll__graph.pdf b/doc/latex/classcUPnPMovieMediator__coll__graph.pdf deleted file mode 100644 index f6fce63..0000000 Binary files a/doc/latex/classcUPnPMovieMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPMovieMediator__inherit__graph.eps b/doc/latex/classcUPnPMovieMediator__inherit__graph.eps deleted file mode 100644 index e738284..0000000 --- a/doc/latex/classcUPnPMovieMediator__inherit__graph.eps +++ /dev/null @@ -1,562 +0,0 @@ -%!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 deleted file mode 100644 index 4bb7b68..0000000 --- a/doc/latex/classcUPnPMovieMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -954b864151a83ca074a16d48740cc45c \ No newline at end of file diff --git a/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf b/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf deleted file mode 100644 index f3580f8..0000000 Binary files a/doc/latex/classcUPnPMovieMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPObjectFactory.tex b/doc/latex/classcUPnPObjectFactory.tex deleted file mode 100644 index 7356b44..0000000 --- a/doc/latex/classcUPnPObjectFactory.tex +++ /dev/null @@ -1,199 +0,0 @@ -\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 deleted file mode 100644 index 7ae1c30..0000000 --- a/doc/latex/classcUPnPObjectFactory__coll__graph.eps +++ /dev/null @@ -1,710 +0,0 @@ -%!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 deleted file mode 100644 index 8adba80..0000000 --- a/doc/latex/classcUPnPObjectFactory__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f6b0540159a7159018a87d95a80b2147 \ No newline at end of file diff --git a/doc/latex/classcUPnPObjectFactory__coll__graph.pdf b/doc/latex/classcUPnPObjectFactory__coll__graph.pdf deleted file mode 100644 index 87d657a..0000000 Binary files a/doc/latex/classcUPnPObjectFactory__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPObjectMediator.tex b/doc/latex/classcUPnPObjectMediator.tex deleted file mode 100644 index 6613879..0000000 --- a/doc/latex/classcUPnPObjectMediator.tex +++ /dev/null @@ -1,262 +0,0 @@ -\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 deleted file mode 100644 index d1e8e38..0000000 --- a/doc/latex/classcUPnPObjectMediator__coll__graph.eps +++ /dev/null @@ -1,1249 +0,0 @@ -%!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 deleted file mode 100644 index 1caf568..0000000 --- a/doc/latex/classcUPnPObjectMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -85e47ee2e1d5da01c8573cc90a9a9e2c \ No newline at end of file diff --git a/doc/latex/classcUPnPObjectMediator__coll__graph.pdf b/doc/latex/classcUPnPObjectMediator__coll__graph.pdf deleted file mode 100644 index f87bd83..0000000 Binary files a/doc/latex/classcUPnPObjectMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPObjectMediator__inherit__graph.eps b/doc/latex/classcUPnPObjectMediator__inherit__graph.eps deleted file mode 100644 index 98cf462..0000000 --- a/doc/latex/classcUPnPObjectMediator__inherit__graph.eps +++ /dev/null @@ -1,710 +0,0 @@ -%!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 deleted file mode 100644 index 270f3ca..0000000 --- a/doc/latex/classcUPnPObjectMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16ab6bd3044bdf97e0a0d6ae10723f8e \ No newline at end of file diff --git a/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf b/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf deleted file mode 100644 index f8913ee..0000000 Binary files a/doc/latex/classcUPnPObjectMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPObjects.tex b/doc/latex/classcUPnPObjects.tex deleted file mode 100644 index 2dcffe9..0000000 --- a/doc/latex/classcUPnPObjects.tex +++ /dev/null @@ -1,39 +0,0 @@ -\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 deleted file mode 100644 index d9dc758..0000000 --- a/doc/latex/classcUPnPResource.tex +++ /dev/null @@ -1,288 +0,0 @@ -\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 deleted file mode 100644 index bb9b7cc..0000000 --- a/doc/latex/classcUPnPResourceMediator.tex +++ /dev/null @@ -1,100 +0,0 @@ -\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 deleted file mode 100644 index f3066b5..0000000 --- a/doc/latex/classcUPnPResourceMediator__coll__graph.eps +++ /dev/null @@ -1,652 +0,0 @@ -%!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 deleted file mode 100644 index 6aa940e..0000000 --- a/doc/latex/classcUPnPResourceMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6885f12acd8f99bc0b432069ef7f9ab7 \ No newline at end of file diff --git a/doc/latex/classcUPnPResourceMediator__coll__graph.pdf b/doc/latex/classcUPnPResourceMediator__coll__graph.pdf deleted file mode 100644 index 995ca6b..0000000 Binary files a/doc/latex/classcUPnPResourceMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPResource__coll__graph.eps b/doc/latex/classcUPnPResource__coll__graph.eps deleted file mode 100644 index 98f0cae..0000000 --- a/doc/latex/classcUPnPResource__coll__graph.eps +++ /dev/null @@ -1,462 +0,0 @@ -%!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 deleted file mode 100644 index 213e628..0000000 --- a/doc/latex/classcUPnPResource__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c0c9bc0c77b27537360e2178ab938faf \ No newline at end of file diff --git a/doc/latex/classcUPnPResource__coll__graph.pdf b/doc/latex/classcUPnPResource__coll__graph.pdf deleted file mode 100644 index ab62189..0000000 Binary files a/doc/latex/classcUPnPResource__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPResources.tex b/doc/latex/classcUPnPResources.tex deleted file mode 100644 index c374d97..0000000 --- a/doc/latex/classcUPnPResources.tex +++ /dev/null @@ -1,173 +0,0 @@ -\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 deleted file mode 100644 index 7f4457f..0000000 --- a/doc/latex/classcUPnPResources__coll__graph.eps +++ /dev/null @@ -1,838 +0,0 @@ -%!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 deleted file mode 100644 index d1fa953..0000000 --- a/doc/latex/classcUPnPResources__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -20e5964ca09aebcf8223c1e86dabbc11 \ No newline at end of file diff --git a/doc/latex/classcUPnPResources__coll__graph.pdf b/doc/latex/classcUPnPResources__coll__graph.pdf deleted file mode 100644 index 84a4926..0000000 Binary files a/doc/latex/classcUPnPResources__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPServer.tex b/doc/latex/classcUPnPServer.tex deleted file mode 100644 index 153f0fb..0000000 --- a/doc/latex/classcUPnPServer.tex +++ /dev/null @@ -1,318 +0,0 @@ -\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 deleted file mode 100644 index a9015b4..0000000 --- a/doc/latex/classcUPnPServer__coll__graph.eps +++ /dev/null @@ -1,1824 +0,0 @@ -%!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 deleted file mode 100644 index 326354b..0000000 --- a/doc/latex/classcUPnPServer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b490a4351c5fe23ac9c224404c139187 \ No newline at end of file diff --git a/doc/latex/classcUPnPServer__coll__graph.pdf b/doc/latex/classcUPnPServer__coll__graph.pdf deleted file mode 100644 index 2e323da..0000000 Binary files a/doc/latex/classcUPnPServer__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPVideoBroadcastMediator.tex b/doc/latex/classcUPnPVideoBroadcastMediator.tex deleted file mode 100644 index d8ae253..0000000 --- a/doc/latex/classcUPnPVideoBroadcastMediator.tex +++ /dev/null @@ -1,153 +0,0 @@ -\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 deleted file mode 100644 index 55c05c6..0000000 --- a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.eps +++ /dev/null @@ -1,1471 +0,0 @@ -%!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 deleted file mode 100644 index 3b0455a..0000000 --- a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1386d6d494a222c63ad2cb3751d5b1f4 \ No newline at end of file diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf b/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf deleted file mode 100644 index 76fecb5..0000000 Binary files a/doc/latex/classcUPnPVideoBroadcastMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps deleted file mode 100644 index aeeb510..0000000 --- a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.eps +++ /dev/null @@ -1,562 +0,0 @@ -%!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 deleted file mode 100644 index 39cdec4..0000000 --- a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9e2f28ebe3d86a4a81b1a5c50bccba2e \ No newline at end of file diff --git a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf b/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf deleted file mode 100644 index e10a466..0000000 Binary files a/doc/latex/classcUPnPVideoBroadcastMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPVideoItemMediator.tex b/doc/latex/classcUPnPVideoItemMediator.tex deleted file mode 100644 index a2cb4c1..0000000 --- a/doc/latex/classcUPnPVideoItemMediator.tex +++ /dev/null @@ -1,161 +0,0 @@ -\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 deleted file mode 100644 index 7399be7..0000000 --- a/doc/latex/classcUPnPVideoItemMediator__coll__graph.eps +++ /dev/null @@ -1,1397 +0,0 @@ -%!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 deleted file mode 100644 index c0c70a0..0000000 --- a/doc/latex/classcUPnPVideoItemMediator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b524b23a3cb95d78f8080c5736b5f54e \ No newline at end of file diff --git a/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf b/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf deleted file mode 100644 index 798b25e..0000000 Binary files a/doc/latex/classcUPnPVideoItemMediator__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps deleted file mode 100644 index 37d990b..0000000 --- a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.eps +++ /dev/null @@ -1,636 +0,0 @@ -%!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 deleted file mode 100644 index be22c47..0000000 --- a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2031cf38727dba187f3b7108d2b9f1ce \ No newline at end of file diff --git a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf b/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf deleted file mode 100644 index 39e6799..0000000 Binary files a/doc/latex/classcUPnPVideoItemMediator__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUPnPWebServer.tex b/doc/latex/classcUPnPWebServer.tex deleted file mode 100644 index 3e6f913..0000000 --- a/doc/latex/classcUPnPWebServer.tex +++ /dev/null @@ -1,229 +0,0 @@ -\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 deleted file mode 100644 index cb7f5b1..0000000 --- a/doc/latex/classcUPnPWebServer__coll__graph.eps +++ /dev/null @@ -1,309 +0,0 @@ -%!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 deleted file mode 100644 index 0981052..0000000 --- a/doc/latex/classcUPnPWebServer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -db043e038192946ad650b05e1f09c435 \ No newline at end of file diff --git a/doc/latex/classcUPnPWebServer__coll__graph.pdf b/doc/latex/classcUPnPWebServer__coll__graph.pdf deleted file mode 100644 index 3d6b301..0000000 Binary files a/doc/latex/classcUPnPWebServer__coll__graph.pdf and /dev/null differ diff --git a/doc/latex/classcUpnpService.tex b/doc/latex/classcUpnpService.tex deleted file mode 100644 index 77c7a6c..0000000 --- a/doc/latex/classcUpnpService.tex +++ /dev/null @@ -1,180 +0,0 @@ -\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 deleted file mode 100644 index 8155755..0000000 --- a/doc/latex/classcUpnpService__inherit__graph.eps +++ /dev/null @@ -1,444 +0,0 @@ -%!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 deleted file mode 100644 index 7be2f11..0000000 --- a/doc/latex/classcUpnpService__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0e29170e3c5c7bffb14d60dfe738343c \ No newline at end of file diff --git a/doc/latex/classcUpnpService__inherit__graph.pdf b/doc/latex/classcUpnpService__inherit__graph.pdf deleted file mode 100644 index ee5afa5..0000000 Binary files a/doc/latex/classcUpnpService__inherit__graph.pdf and /dev/null differ diff --git a/doc/latex/classcVirtualConnection.tex b/doc/latex/classcVirtualConnection.tex deleted file mode 100644 index a0334d4..0000000 --- a/doc/latex/classcVirtualConnection.tex +++ /dev/null @@ -1,25 +0,0 @@ -\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 deleted file mode 100644 index 91fc5f1..0000000 --- a/doc/latex/doxygen.sty +++ /dev/null @@ -1,86 +0,0 @@ -\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 deleted file mode 100644 index 9bd003b..0000000 --- a/doc/latex/hierarchy.tex +++ /dev/null @@ -1,67 +0,0 @@ -\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 deleted file mode 100644 index d623968..0000000 --- a/doc/latex/refman.tex +++ /dev/null @@ -1,101 +0,0 @@ -\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 deleted file mode 100644 index 0929c2a..0000000 --- a/doc/latex/structDLNAIconProfile.tex +++ /dev/null @@ -1,39 +0,0 @@ -\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 deleted file mode 100644 index bf53525..0000000 --- a/doc/latex/structDLNAProfile.tex +++ /dev/null @@ -1,29 +0,0 @@ -\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 deleted file mode 100644 index 625e1cf..0000000 --- a/doc/latex/structcClass.tex +++ /dev/null @@ -1,67 +0,0 @@ -\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 deleted file mode 100644 index 5a38bfa..0000000 --- a/doc/latex/structcSortCrit.tex +++ /dev/null @@ -1,29 +0,0 @@ -\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 deleted file mode 100644 index b5b6ce9..0000000 --- a/doc/latex/structcUPnPObjectID.tex +++ /dev/null @@ -1,274 +0,0 @@ -\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 deleted file mode 100644 index 6a69ecf..0000000 --- a/doc/latex/structcUPnPResultSet.tex +++ /dev/null @@ -1,34 +0,0 @@ -\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 deleted file mode 100644 index a791812..0000000 --- a/doc/upnpdlna.dox +++ /dev/null @@ -1,1510 +0,0 @@ -# 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 , where is the value of -# the FILE_VERSION_FILTER tag, and 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 , where -# is the value of the INPUT_FILTER tag, and 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 -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's -# filter section matches. -# Qt Help Project / Filter Attributes. - -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 -- cgit v1.2.3 From a26c93fa92a87187dded8d0492ed6988ac725585 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 27 Jan 2010 13:50:27 +0100 Subject: Added filter functionality, added max length of metadata --- HISTORY | 5 ++ common.h | 10 +++- database/object.cpp | 148 +++++++++++++++++++++++++++++++++---------------- database/resources.cpp | 2 +- inc/object.h | 8 +-- inc/util.h | 9 ++- misc/util.cpp | 76 ++++++++++++++++--------- 7 files changed, 173 insertions(+), 85 deletions(-) diff --git a/HISTORY b/HISTORY index e2a4c1c..05b1439 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,11 @@ VDR Plugin 'upnp' Revision History ---------------------------------- +2009-01-25: Version 0.0.2-alpha1 + + - Bug: A minor bug prevented the plugin from detecting the resources + correnctly + 2009-01-24: Version 0.0.2-alpha0 - New: Added record streaming support for SDTV diff --git a/common.h b/common.h index 6b0d676..7a19aa1 100644 --- a/common.h +++ b/common.h @@ -376,10 +376,13 @@ enum UPNP_WEB_METHODS { #define UPNP_PROP_WRITESTATUS "upnp:writeStatus" #define UPNP_PROP_CLASS "upnp:class" #define UPNP_PROP_CLASSNAME UPNP_PROP_CLASS "@name" +#define UPNP_PROP_CREATECLASS "upnp:createClass" #define UPNP_PROP_SEARCHCLASS "upnp:searchClass" #define UPNP_PROP_SCLASSDERIVED UPNP_PROP_SEARCHCLASS "@includeDerived" -#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID" #define UPNP_PROP_SCLASSNAME UPNP_PROP_SEARCHCLASS "@name" +#define UPNP_PROP_CCLASSDERIVED UPNP_PROP_CREATECLASS "@includeDerived" +#define UPNP_PROP_CCLASSNAME UPNP_PROP_CREATECLASS "@name" +#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID" #define UPNP_PROP_SEARCHABLE UPNP_OBJECT_CONTAINER "@searchable" #define UPNP_PROP_CHILDCOUNT UPNP_OBJECT_CONTAINER "@childcount" #define UPNP_PROP_RESOURCE "res" @@ -481,8 +484,9 @@ enum UPNP_WEB_METHODS { UPNP_PROP_LONGDESCRIPTION ","\ UPNP_PROP_PUBLISHER -#define UPNP_DURATION_FORMAT_STRING "%5d:%02d:%02d" -#define UPNP_DURATION_FRAME_FORMAT ".%03d" +#define UPNP_DURATION_FORMAT "%5d:%02d:%02d" +#define UPNP_DURATION_FRAME_FORMAT "%5d:%02d:%02d.%03d" +#define UPNP_MAX_METADATA_LENGTH 1024 #define AVDETECTOR_TIME_BASE 1000 /**************************************************** diff --git a/database/object.cpp b/database/object.cpp index 71dfe63..b193567 100644 --- a/database/object.cpp +++ b/database/object.cpp @@ -334,30 +334,22 @@ IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringLi MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); + MESSAGE(VERBOSE_DIDL, "Filter: %d", Filter?Filter->Size():-1); IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "item"); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_OBJECTID), *this->getID()); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_PARENTID), *this->getParentID()); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_RESTRICTED), this->isRestricted()?"1":"0"); - ixmlNode_appendChild(Didl, (IXML_Node*) eItem); - IXML_Element* eTitle = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_TITLE); - IXML_Node* Title = ixmlDocument_createTextNode(this->mDIDLFragment, this->getTitle()); - - IXML_Element* eClass = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_CLASS); - IXML_Node* Class = ixmlDocument_createTextNode(this->mDIDLFragment, this->getClass()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_OBJECTID, *this->getID()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_PARENTID, *this->getParentID()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_RESTRICTED, this->isRestricted()?"1":"0"); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_TITLE, this->getTitle()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CLASS, this->getClass()); - ixmlNode_appendChild((IXML_Node*) eTitle, Title); - ixmlNode_appendChild((IXML_Node*) eClass, Class); - ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eTitle); - ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eClass); - -// if(Filter==NULL || Filter->Find(UPNP_PROP_CREATOR)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CREATOR, this->getCreator()); -// if(Filter==NULL || Filter->Find(UPNP_PROP_WRITESTATUS)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_WRITESTATUS, itoa(this->getWriteStatus())); -// if(Filter==NULL || Filter->Find(UPNP_PROP_REFERENCEID)) ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_REFERENCEID, *this->getReferenceID()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CREATOR, this->getCreator()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_WRITESTATUS, itoa(this->getWriteStatus())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_REFERENCEID, ((int)(this->getReferenceID())<0)?"":*this->getReferenceID()); for(cUPnPResource* Resource = this->getResources()->First(); Resource; Resource = this->getResources()->Next(Resource)){ MESSAGE(VERBOSE_DIDL, "Resource: %s", Resource->getResource()); @@ -367,18 +359,17 @@ IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringLi cString ResourceURL = cString::sprintf("%s%s/get?resId=%d", *URLBase, UPNP_DIR_SHARES, Resource->getID()); MESSAGE(VERBOSE_DIDL, "Resource-URI: %s", *ResourceURL); + + IXML_Element* eRes = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RESOURCE, *ResourceURL); + if(eRes){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_BITRATE, itoa(Resource->getBitrate())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_BITSPERSAMPLE, itoa(Resource->getBitsPerSample())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_COLORDEPTH, itoa(Resource->getColorDepth())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_DURATION, Resource->getDuration()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_PROTOCOLINFO, Resource->getProtocolInfo()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_SIZE, cString::sprintf("%lld", Resource->getFileSize())); + } - IXML_Element* eRes = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_RESOURCE); - IXML_Node* Res = ixmlDocument_createTextNode(this->mDIDLFragment, *ResourceURL); - ixmlNode_appendChild((IXML_Node*) eRes, Res); - - if(Resource->getBitrate()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_BITRATE), itoa(Resource->getBitrate())); - if(Resource->getBitsPerSample()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_BITSPERSAMPLE), itoa(Resource->getBitsPerSample())); - if(Resource->getColorDepth()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_COLORDEPTH), itoa(Resource->getColorDepth())); - if(Resource->getDuration()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_DURATION), Resource->getDuration()); - if(Resource->getProtocolInfo()) ixmlElement_setAttribute(eRes, att(UPNP_PROP_PROTOCOLINFO), Resource->getProtocolInfo()); - - ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eRes); } return (IXML_Node*)eItem; @@ -411,25 +402,38 @@ IXML_Node* cUPnPClassContainer::createDIDLFragment(IXML_Document* Document, cStr MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); + MESSAGE(VERBOSE_DIDL, "Filter: %d", Filter?Filter->Size():-1); IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "container"); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_OBJECTID), *this->getID()); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_PARENTID), *this->getParentID()); - ixmlElement_setAttribute(eItem, att(UPNP_PROP_RESTRICTED), this->isRestricted()?"1":"0"); ixmlNode_appendChild(Didl, (IXML_Node*) eItem); - IXML_Element* eTitle = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_TITLE); - IXML_Node* Title = ixmlDocument_createTextNode(this->mDIDLFragment, this->getTitle()); - - IXML_Element* eClass = ixmlDocument_createElement(this->mDIDLFragment, UPNP_PROP_CLASS); - IXML_Node* Class = ixmlDocument_createTextNode(this->mDIDLFragment, this->getClass()); - - ixmlNode_appendChild((IXML_Node*) eTitle, Title); - ixmlNode_appendChild((IXML_Node*) eClass, Class); - ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eTitle); - ixmlNode_appendChild((IXML_Node*) eItem, (IXML_Node*) eClass); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_OBJECTID, *this->getID()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_PARENTID, *this->getParentID()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_RESTRICTED, this->isRestricted()?"1":"0"); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_TITLE, this->getTitle()); + ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CLASS, this->getClass()); + + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DLNA_CONTAINERTYPE, this->getContainerType()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHILDCOUNT, itoa(this->getChildCount())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SEARCHABLE, this->isSearchable()?"1":"0"); + + const tClassVector* CreateClasses = this->getCreateClasses(); + for(unsigned int i = 0; i < CreateClasses->size(); i++){ + cClass CreateClass = CreateClasses->at(i); + IXML_Element* eCreateClasses = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CREATECLASS, CreateClass.ID); + if(eCreateClasses) + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CCLASSDERIVED, CreateClass.includeDerived?"1":"0"); + } + const tClassVector* SearchClasses = this->getSearchClasses(); + for(unsigned int i = 0; i < SearchClasses->size(); i++){ + cClass SearchClass = SearchClasses->at(i); + IXML_Element* eSearchClasses = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SEARCHCLASS, SearchClass.ID); + if(eSearchClasses) + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SCLASSDERIVED, SearchClass.includeDerived?"1":"0"); + } + return (IXML_Node*)eItem; } @@ -596,9 +600,52 @@ cUPnPClassVideoItem::cUPnPClassVideoItem(){ cUPnPClassVideoItem::~cUPnPClassVideoItem(){ } -//cString cUPnPClassVideoItem::createDIDLFragment(cStringList* Filter){ -// return NULL; -//} +IXML_Node* cUPnPClassVideoItem::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ + IXML_Element* eItem = (IXML_Element*) cUPnPClassItem::createDIDLFragment(Document, Filter); + + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_LONGDESCRIPTION, this->getLongDescription()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DESCRIPTION, this->getDescription()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_LANGUAGE, this->getLanguage()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RATING, this->getRating()); + + char* genre = strtok(strdup0(this->getGenre()), ","); + while(genre){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_GENRE, genre); + genre = strtok(NULL, ","); + } + + char* producer = strtok(strdup0(this->getProducers()), ","); + while(producer){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_PRODUCER, producer); + producer = strtok(NULL, ","); + } + + char* actor = strtok(strdup0(this->getActors()), ","); + while(actor){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_ACTOR, actor); + actor = strtok(NULL, ","); + } + + char* director = strtok(strdup0(this->getDirectors()), ","); + while(director){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DIRECTOR, director); + director = strtok(NULL, ","); + } + + char* publisher = strtok(strdup0(this->getPublishers()), ","); + while(publisher){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_PUBLISHER, publisher); + publisher = strtok(NULL, ","); + } + + char* relation = strtok(strdup0(this->getRelations()), ","); + while(relation){ + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RELATION, relation); + relation = strtok(NULL, ","); + } + + return (IXML_Node*) eItem; +} cStringList* cUPnPClassVideoItem::getPropertyList(){ cStringList* Properties = cUPnPClassItem::getPropertyList(); @@ -754,9 +801,16 @@ cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast(){ cUPnPClassVideoBroadcast::~cUPnPClassVideoBroadcast(){ } -//cString cUPnPClassVideoBroadcast::createDIDLFragment(cStringList* Filter){ -// return NULL; -//} +IXML_Node* cUPnPClassVideoBroadcast::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ + IXML_Element* eItem = (IXML_Element*) cUPnPClassItem::createDIDLFragment(Document, Filter); + + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHANNELNAME, this->getChannelName()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHANNELNR, itoa(this->getChannelNr())); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_ICON, this->getIcon()); + ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_REGION, this->getRegion()); + + return (IXML_Node*) eItem; +} cStringList* cUPnPClassVideoBroadcast::getPropertyList(){ cStringList* Properties = cUPnPClassVideoItem::getPropertyList(); diff --git a/database/resources.cpp b/database/resources.cpp index 8ff478f..23403d5 100644 --- a/database/resources.cpp +++ b/database/resources.cpp @@ -156,7 +156,7 @@ int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_RECORDING,ResourceFile, Detector->getDLNAProfile()->mime, ProtocolInfo); Resource->mBitrate = Detector->getBitrate(); Resource->mBitsPerSample = Detector->getBitsPerSample(); - Resource->mDuration = duration(Detector->getDuration()); + Resource->mDuration = duration(Detector->getDuration(), AVDETECTOR_TIME_BASE); Resource->mResolution = (Detector->getWidth() && Detector->getHeight()) ? *cString::sprintf("%dx%d",Detector->getWidth(), Detector->getHeight()) : NULL; Resource->mSampleFrequency = Detector->getSampleFrequency(); Resource->mSize = Detector->getFileSize(); diff --git a/inc/object.h b/inc/object.h index bceb3f1..1031589 100644 --- a/inc/object.h +++ b/inc/object.h @@ -752,7 +752,7 @@ public: * * @return a vector with all search classes */ - const std::vector* getSearchClasses() const { return &(this->mSearchClasses); } + const tClassVector* getSearchClasses() const { return &(this->mSearchClasses); } /** * Get the create classes * @@ -763,7 +763,7 @@ public: * * @return a vector with create classes */ - const std::vector* getCreateClasses() const { return &(this->mCreateClasses); } + const tClassVector* getCreateClasses() const { return &(this->mCreateClasses); } /** * Is this container searchable * @@ -832,7 +832,7 @@ protected: cUPnPClassVideoItem(); public: virtual ~cUPnPClassVideoItem(); - //virtual cString createDIDLFragment(cStringList* Filter); + virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter); virtual cStringList* getPropertyList(); virtual bool setProperty(const char* Property, const char* Value); virtual bool getProperty(const char* Property, char** Value) const; @@ -1141,7 +1141,7 @@ protected: cUPnPClassVideoBroadcast(); public: virtual ~cUPnPClassVideoBroadcast(); - //virtual cString createDIDLFragment(cStringList* Filter); + virtual IXML_Node* createDIDLFragment(IXML_Document* Document, cStringList* Filter); virtual cStringList* getPropertyList(); virtual bool setProperty(const char* Property, const char* Value); virtual bool getProperty(const char* Property, char** Value) const; diff --git a/inc/util.h b/inc/util.h index 5f6f4a3..f194186 100644 --- a/inc/util.h +++ b/inc/util.h @@ -88,14 +88,17 @@ char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int * The property must have the pattern "namespace:property@attribute". * * @return returns - * - \bc <0, in case of an error - * - \bc 0, otherwise + * - \bc NULL, in case of an error + * - \bc the newly created property node or the node at which the attribute was + * appended to * @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 ); +IXML_Element* ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, IN const char* upnpproperty, IN const char* value ); + +IXML_Element* ixmlAddFilteredProperty(IN cStringList* Filter, IN IXML_Document* document, IN IXML_Element* node, IN const char* upnpproperty, IN const char* value ); /** * creates a part of a string * diff --git a/misc/util.cpp b/misc/util.cpp index d93d027..0781307 100644 --- a/misc/util.cpp +++ b/misc/util.cpp @@ -18,13 +18,15 @@ #include #include -#define DURATION_MAX_STRING_LENGTH 13 // DLNA: 1-5 DIGIT hours : +#define DURATION_MAX_STRING_LENGTH 16 // DLNA: 1-5 DIGIT hours : // 2 DIGIT minutes : // 2 DIGIT seconds . // 3 DIGIT fraction char* duration(off64_t duration, unsigned int timeBase){ - if (timeBase == 0) timeBase = 1; + if(!timeBase){ + timeBase = 1; + } int seconds, minutes, hours, fraction; @@ -37,28 +39,29 @@ char* duration(off64_t duration, unsigned int timeBase){ char* output = new char[DURATION_MAX_STRING_LENGTH]; - if(!snprintf( - output, - DURATION_MAX_STRING_LENGTH, - UPNP_DURATION_FORMAT_STRING, - hours, minutes, seconds) - ){ - delete output; - return NULL; + if(timeBase > 1){ + if(!snprintf( + output, + DURATION_MAX_STRING_LENGTH, + UPNP_DURATION_FRAME_FORMAT, + hours, minutes, seconds, fraction) < 0 + ){ + delete [] output; + return NULL; + } } else { - if(timeBase > 1 && - !snprintf( + if(snprintf( output, DURATION_MAX_STRING_LENGTH, - "%s" UPNP_DURATION_FRAME_FORMAT, - output, fraction) + UPNP_DURATION_FORMAT, + hours, minutes, seconds) < 0 ){ - delete output; + delete [] output; return NULL; } - else return output; } + return output; } char* substr(const char* str, unsigned int offset, unsigned int length){ @@ -475,39 +478,58 @@ char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int return ret; } -int ixmlAddProperty(IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ - if(!node) return -1; +IXML_Element* ixmlAddProperty(IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ + if(!node) return NULL; IXML_Element* PropertyNode = NULL; + char tvalue[UPNP_MAX_METADATA_LENGTH]; + // trim the value to max metadata size + if(value){ + strncpy(tvalue, value, UPNP_MAX_METADATA_LENGTH); + } + const char* attribute = att(upnpproperty); const char* property = prop(upnpproperty); if(attribute){ - if(strcasecmp(property,"")){ - ixmlElement_setAttribute(node, attribute, value); + if(!strcmp(property,"")){ + ixmlElement_setAttribute(node, attribute, tvalue); } else { IXML_NodeList* NodeList = ixmlElement_getElementsByTagName(node, property); if(NodeList!=NULL){ - IXML_Node* Node = ixmlNodeList_item(NodeList, 0); - PropertyNode = (IXML_Element*) ixmlNode_getFirstChild(Node); + PropertyNode = (IXML_Element*) ixmlNodeList_item(NodeList, 0); if(PropertyNode){ - ixmlElement_setAttribute(PropertyNode, attribute, value); + if(ixmlElement_setAttribute(PropertyNode, attribute, tvalue)!=IXML_SUCCESS){ + return NULL; + } } else { ixmlNodeList_free(NodeList); - return -1; + return NULL; } } else { - return -1; + return NULL; } } } else { PropertyNode = ixmlDocument_createElement(document, property); - IXML_Node* PropertyText = ixmlDocument_createTextNode(document, value); + IXML_Node* PropertyText = ixmlDocument_createTextNode(document, tvalue); ixmlNode_appendChild((IXML_Node*) PropertyNode, PropertyText); ixmlNode_appendChild((IXML_Node*) node, (IXML_Node*) PropertyNode); } - return 0; + return PropertyNode; } + +IXML_Element* ixmlAddFilteredProperty(cStringList* Filter, IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ + // leave out empty values. + if(!value || !strcmp(value, "") || !strcmp(value, "0")){ + return NULL; + } + + if(!Filter || Filter->Find(upnpproperty)) + return ixmlAddProperty(document, node, upnpproperty, value); + else + return NULL; +} \ No newline at end of file -- cgit v1.2.3 From 15139183fdea8f65af5a7dbfd354bcedf5886e80 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Wed, 27 Jan 2010 18:55:30 +0100 Subject: Added automatic recording update after a new record was made --- database/metadata.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/database/metadata.cpp b/database/metadata.cpp index 2bfa2d1..a9d780f 100644 --- a/database/metadata.cpp +++ b/database/metadata.cpp @@ -461,11 +461,20 @@ void cMediaDatabase::Action(){ time_t LastEPGUpdate = 0; while(this->Running()){ +#ifndef WITHOUT_TV if(cSchedules::Modified() >= LastEPGUpdate){ MESSAGE(VERBOSE_EPG_UPDATES, "Schedule changed. Updating..."); updateChannelEPG(); LastEPGUpdate = cSchedules::Modified(); } +#endif +#ifndef WITHOUT_RECORDS + int NotUsed; + if(Recordings.StateChanged(NotUsed)){ + MESSAGE(VERBOSE_EPG_UPDATES, "Recordings changed. Updating..."); + loadRecordings(); + } +#endif cCondWait::SleepMs(60 * 1000); // sleep a minute } @@ -531,7 +540,10 @@ int cMediaDatabase::browse( } cUPnPClassObject* Child = Children->First(); - if(Count==0) Count = Container->getChildCount(); + if(Count==0 || Count > Container->getChildCount()) + Count = Container->getChildCount(); + + MESSAGE(VERBOSE_DIDL, "Number of children: %d", Count); while(Offset-- && (Child = Children->Next(Child))){} for(; Count && Child ; Child = Children->Next(Child), Count--){ MESSAGE(VERBOSE_DIDL, "Appending %s to didl", Child->getTitle()); -- cgit v1.2.3 From 159592eaa3b7ba9135bf01b4015af0d7914805bf Mon Sep 17 00:00:00 2001 From: methodus Date: Sat, 15 Sep 2012 23:44:19 +0200 Subject: Master geleert --- COPYING | 340 -------- HISTORY | 40 - Makefile | 164 ---- README | 129 --- channelmap.conf.example | 30 - common.cpp | 24 - common.h | 799 ------------------ database/database.cpp | 300 ------- database/metadata.cpp | 575 ------------- database/object.cpp | 1887 ------------------------------------------ database/resources.cpp | 355 -------- dlna/avdetector.cpp | 378 --------- dlna/dlna.cpp | 197 ----- dlna/profiles/aac.cpp | 8 - dlna/profiles/ac3.cpp | 85 -- dlna/profiles/amr.cpp | 8 - dlna/profiles/atrac3plus.cpp | 8 - dlna/profiles/container.cpp | 117 --- dlna/profiles/jpeg.cpp | 11 - dlna/profiles/lpcm.cpp | 8 - dlna/profiles/mpa.cpp | 121 --- dlna/profiles/mpeg1.cpp | 15 - dlna/profiles/mpeg2.cpp | 216 ----- dlna/profiles/mpeg4_p10.cpp | 148 ---- dlna/profiles/mpeg4_p2.cpp | 129 --- dlna/profiles/png.cpp | 11 - dlna/profiles/wma.cpp | 8 - dlna/profiles/wmv9.cpp | 8 - http/icons/upnpIconLrg.jpeg | Bin 6620 -> 0 bytes http/icons/upnpIconLrg.png | Bin 17309 -> 0 bytes http/icons/upnpIconSm.jpeg | Bin 2416 -> 0 bytes http/icons/upnpIconSm.png | Bin 4769 -> 0 bytes http/xml/cds_scpd.xml | 145 ---- http/xml/cms_scpd.xml | 133 --- inc/avdetector.h | 124 --- inc/config.h | 74 -- inc/database.h | 1024 ----------------------- inc/filehandle.h | 108 --- inc/livereceiver.h | 105 --- inc/menusetup.h | 103 --- inc/metadata.h | 189 ----- inc/object.h | 1576 ----------------------------------- inc/profiles.h | 32 - inc/profiles/aac.h | 36 - inc/profiles/ac3.h | 24 - inc/profiles/amr.h | 17 - inc/profiles/atrac3plus.h | 16 - inc/profiles/container.h | 47 -- inc/profiles/jpeg.h | 24 - inc/profiles/lpcm.h | 16 - inc/profiles/mpa.h | 25 - inc/profiles/mpeg1.h | 16 - inc/profiles/mpeg2.h | 68 -- inc/profiles/mpeg4_p10.h | 153 ---- inc/profiles/mpeg4_p2.h | 80 -- inc/profiles/png.h | 22 - inc/profiles/profile_data.h | 213 ----- inc/profiles/wma.h | 18 - inc/profiles/wmv9.h | 24 - inc/recplayer.h | 53 -- inc/resources.h | 318 ------- inc/search.h | 156 ---- inc/server.h | 221 ----- inc/upnp/connectionmanager.h | 99 --- inc/upnp/contentdirectory.h | 56 -- inc/upnp/dlna.h | 97 --- inc/upnp/service.h | 119 --- inc/util.h | 151 ---- inc/webserver.h | 160 ---- misc/config.cpp | 135 --- misc/menusetup.cpp | 205 ----- misc/search.cpp | 809 ------------------ misc/util.cpp | 535 ------------ po/de-DE.po | 271 ------ po/de-DE.po~ | 273 ------ receiver/livereceiver.cpp | 188 ----- receiver/recplayer.cpp | 123 --- server/server.cpp | 371 --------- server/webserver.cpp | 363 -------- upnp.cpp | 140 ---- upnp.h | 120 --- upnp/connectionmanager.cpp | 393 --------- upnp/contentdirectory.cpp | 306 ------- upnp/service.cpp | 118 --- 84 files changed, 16311 deletions(-) delete mode 100644 COPYING delete mode 100644 HISTORY delete mode 100644 Makefile delete mode 100644 README delete mode 100644 channelmap.conf.example delete mode 100644 common.cpp delete mode 100644 common.h delete mode 100644 database/database.cpp delete mode 100644 database/metadata.cpp delete mode 100644 database/object.cpp delete mode 100644 database/resources.cpp delete mode 100644 dlna/avdetector.cpp delete mode 100644 dlna/dlna.cpp delete mode 100644 dlna/profiles/aac.cpp delete mode 100644 dlna/profiles/ac3.cpp delete mode 100644 dlna/profiles/amr.cpp delete mode 100644 dlna/profiles/atrac3plus.cpp delete mode 100644 dlna/profiles/container.cpp delete mode 100644 dlna/profiles/jpeg.cpp delete mode 100644 dlna/profiles/lpcm.cpp delete mode 100644 dlna/profiles/mpa.cpp delete mode 100644 dlna/profiles/mpeg1.cpp delete mode 100644 dlna/profiles/mpeg2.cpp delete mode 100644 dlna/profiles/mpeg4_p10.cpp delete mode 100644 dlna/profiles/mpeg4_p2.cpp delete mode 100644 dlna/profiles/png.cpp delete mode 100644 dlna/profiles/wma.cpp delete mode 100644 dlna/profiles/wmv9.cpp delete mode 100755 http/icons/upnpIconLrg.jpeg delete mode 100755 http/icons/upnpIconLrg.png delete mode 100755 http/icons/upnpIconSm.jpeg delete mode 100755 http/icons/upnpIconSm.png delete mode 100644 http/xml/cds_scpd.xml delete mode 100644 http/xml/cms_scpd.xml delete mode 100644 inc/avdetector.h delete mode 100644 inc/config.h delete mode 100644 inc/database.h delete mode 100644 inc/filehandle.h delete mode 100644 inc/livereceiver.h delete mode 100644 inc/menusetup.h delete mode 100644 inc/metadata.h delete mode 100644 inc/object.h delete mode 100644 inc/profiles.h delete mode 100644 inc/profiles/aac.h delete mode 100644 inc/profiles/ac3.h delete mode 100644 inc/profiles/amr.h delete mode 100644 inc/profiles/atrac3plus.h delete mode 100644 inc/profiles/container.h delete mode 100644 inc/profiles/jpeg.h delete mode 100644 inc/profiles/lpcm.h delete mode 100644 inc/profiles/mpa.h delete mode 100644 inc/profiles/mpeg1.h delete mode 100644 inc/profiles/mpeg2.h delete mode 100644 inc/profiles/mpeg4_p10.h delete mode 100644 inc/profiles/mpeg4_p2.h delete mode 100644 inc/profiles/png.h delete mode 100644 inc/profiles/profile_data.h delete mode 100644 inc/profiles/wma.h delete mode 100644 inc/profiles/wmv9.h delete mode 100644 inc/recplayer.h delete mode 100644 inc/resources.h delete mode 100644 inc/search.h delete mode 100644 inc/server.h delete mode 100644 inc/upnp/connectionmanager.h delete mode 100644 inc/upnp/contentdirectory.h delete mode 100644 inc/upnp/dlna.h delete mode 100644 inc/upnp/service.h delete mode 100644 inc/util.h delete mode 100644 inc/webserver.h delete mode 100644 misc/config.cpp delete mode 100644 misc/menusetup.cpp delete mode 100644 misc/search.cpp delete mode 100644 misc/util.cpp delete mode 100644 po/de-DE.po delete mode 100644 po/de-DE.po~ delete mode 100644 receiver/livereceiver.cpp delete mode 100644 receiver/recplayer.cpp delete mode 100644 server/server.cpp delete mode 100644 server/webserver.cpp delete mode 100644 upnp.cpp delete mode 100644 upnp.h delete mode 100644 upnp/connectionmanager.cpp delete mode 100644 upnp/contentdirectory.cpp delete mode 100644 upnp/service.cpp diff --git a/COPYING b/COPYING deleted file mode 100644 index f90922e..0000000 --- a/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/HISTORY b/HISTORY deleted file mode 100644 index 05b1439..0000000 --- a/HISTORY +++ /dev/null @@ -1,40 +0,0 @@ -VDR Plugin 'upnp' Revision History ----------------------------------- - -2009-01-25: Version 0.0.2-alpha1 - - - Bug: A minor bug prevented the plugin from detecting the resources - correnctly - -2009-01-24: Version 0.0.2-alpha0 - - - New: Added record streaming support for SDTV - HDTV is not working yet, as it requires different DLNA profiles - - Bug: Improved live-tv streaming quality, which will hopefully fix the - problem with the buffer strategy and channels with bad bandwidth - - New: Rearranged folder structure to meet future features - - New: Added german translation - - New: support for DLNA compatible devices. For those devices a special - patch is required which must be applied to libupnp-1.6.6. - See README for more information - - New: Added new command line option to specify the destination folder - for the metadata database and the webfolder. - See README for more information - -2009-11-19: Version 0.0.1-alpha4 - -- New: Added options for verbosity level and autodetect settings. - -2009-10-23: Version 0.0.1-alpha1 - -- Fixed #185: Database rejected statements with single quotes inside strings - -2009-10-23: Version 0.0.1-alpha0 - -- Initial revision. -- Known limitations: currently only channel lists with less than 30 channels - work. -- LiveTV support -- Limited sort capabilities: Title, Creator, Write status, Publisher, - Description, Long description, Genre - Note: Sort will only work if this properties are present diff --git a/Makefile b/Makefile deleted file mode 100644 index f01ccbb..0000000 --- a/Makefile +++ /dev/null @@ -1,164 +0,0 @@ -# -# Makefile for a Video Disk Recorder plugin -# -# $Id$ - -# The official name of this plugin. -# This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. -# IMPORTANT: the presence of this macro is important for the Make.config -# file. So it must be defined, even if it is not used here! -# -PLUGIN = upnp -COMMON = common.h - -### The version number of this plugin (taken from the main source file): - -VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).cpp | awk '{ print $$6 }' | sed -e 's/[";]//g') - -### The C++ compiler and options: - -CXX ?= gcc -CXXFLAGS ?= -fPIC -g -Wall -O2 -Wextra -Woverloaded-virtual -Wno-parentheses -Wl,-R/usr/local/lib - -### The directory environment: - -VDRDIR = ../../.. -LIBDIR = ../../lib -TMPDIR = /tmp - -### Allow user defined options to overwrite defaults: - --include $(VDRDIR)/Make.config - -### The version number of VDR's plugin API (taken from VDR's "config.h"): - -APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) - -### The name of the distribution archive: - -ARCHIVE = $(PLUGIN)-$(VERSION) -PACKAGE = vdr-$(ARCHIVE) - -### Includes and Defines (add further entries here): - -LIBS += -lupnp -lixml -lsqlite3 -lavformat -lavcodec - -INCLUDES += -I$(VDRDIR)/include -I/usr/include -Iinc \ - -DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE - -ifdef WITH_WINDOWS_MEDIA - DEFINES += -DWITH_WINDOWS_MEDIA -endif - -DEFINES += -DWITHOUT_AUDIO -DWITHOUT_CUSTOM_VIDEOS - -### The object files (add further files here): - -# DLNA Profiles -DLNA_PROFILES = dlna/profiles/aac.o \ - dlna/profiles/ac3.o \ - dlna/profiles/amr.o \ - dlna/profiles/atrac3plus.o \ - dlna/profiles/jpeg.o \ - dlna/profiles/lpcm.o \ - dlna/profiles/mpa.o \ - dlna/profiles/mpeg1.o \ - dlna/profiles/mpeg2.o \ - dlna/profiles/mpeg4_p2.o \ - dlna/profiles/mpeg4_p10.o \ - dlna/profiles/png.o \ - dlna/profiles/container.o - -# Windows Media Formats -ifdef WITH_WINDOWS_MEDIA - DLNA_PROFILES += dlna/profiles/wma.o \ - dlna/profiles/wmv9.o -endif - -DLNA_OBJS = dlna/dlna.o \ - dlna/avdetector.o \ - $(DLNA_PROFILES) - -# Root folder -OBJS = $(PLUGIN).o \ - common.o \ - misc/menusetup.o \ - misc/util.o \ - misc/config.o \ - misc/search.o \ - database/database.o \ - database/metadata.o \ - database/object.o \ - database/resources.o \ - server/server.o \ - server/webserver.o \ - upnp/service.o \ - upnp/connectionmanager.o \ - upnp/contentdirectory.o \ - receiver/livereceiver.o \ - receiver/recplayer.o \ - $(DLNA_OBJS) - -### The main target: - -all: libvdr-$(PLUGIN).so i18n - -### Implicit rules: - -%.o: %.cpp - $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $(LIBS) -o $@ $< - -### Dependencies: - -MAKEDEP = $(CXX) -MM -MG -DEPFILE = .dependencies - -$(DEPFILE): Makefile - @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.cpp) > $@ - --include $(DEPFILE) - -### Internationalization (I18N): - -PODIR = po -LOCALEDIR = $(VDRDIR)/locale -I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot - -%.mo: %.po - msgfmt -c -o $@ $< - -$(I18Npot): $(wildcard *.cpp) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -k_ -ktr -ktrNOOP --msgid-bugs-address='' -o $@ $(OBJS:%.o=%.cpp) - -%.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q $@ $< - @touch $@ - -$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo - @mkdir -p $(dir $@) - cp $< $@ - -.PHONY: i18n -i18n: $(I18Nmsgs) $(I18Npot) - -### Targets: - -libvdr-$(PLUGIN).so: $(OBJS) - $(CXX) $(CXXFLAGS) $(LIBS) -shared $(OBJS) -o $@ -lc - @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) - -dist: clean - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @mkdir $(TMPDIR)/$(ARCHIVE) - @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar --exclude="doc" -czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @echo Distribution package created as $(PACKAGE).tgz - -clean: - @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot diff --git a/README b/README deleted file mode 100644 index d6404a7..0000000 --- a/README +++ /dev/null @@ -1,129 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Written by: Denis Loh - Andreas Günther - -Project's homepage: http://upnp.vdr-developer.org - -Latest version available at: http://upnp.vdr-developer.org - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -See the file COPYING for more information. - -Please note: This plugin is written under the terms of open source -redistribution by - -Hochschule für Telekommunikation Leipzig, -University of Applied Science -Gustav-Freytag-Straße 43-45 -04277 Leipzig -Germany -http://www.hft-leipzig.de - -All rights reserved. - - -Description: - -UPnP/DLNA Plugin for Video Disk Recorder - -This Plugins extends the VDR with the possibility to act as an UPnP/DLNA Media -Server (DMS). It will serve VDR's contents in the network to any UPnP-AV and -DLNA capable devices. - -The plugin requires a valid network connection with a IPv4 address. It will find -its settings automatically by default. In this case, the first network device in -the network device list with a valid IPv4 address and port 49152 will be used -for connections. You can change this behavior either by setting the command line -options or by editing the setup via the VDRs setup page. The command line -options have a higher priority and substitute the menu settings. - -The command line settings are: - -i --int= The server network - interface - e.g: eth0, wlan1 etc. - If given option '-a' must - be absent. - -a
--address=
The server IPv4 address. - If given option '-i' must - be absent. - -p --port= The server port - Supported ports: - 0 (auto detect) - 49152-65535 (user defined) - -d --autodetect Force auto detection - Use this option to - overwrite the setup menu - options. - -v --verbose Increase verbosity level - The more v options the - higher the output level - --dbdir= The directory in which the - metadata database is stored - --httpdir= The directory where the - http documents are located - -The verbose option can be more than once. With each option the verbosity level -will be increased. The maximum level is 5. Further options are silently ignored. - - -v Print most important messages - -vv Print messages from the components - i.e. the webserver, CDS, CMS, etc. - -vvv Print messages from receivers and players - and other additional components - -vvvv You can't get enough, hum? - This will print SQL messages and DIDL - messages - -vvvvv Can you read the matrix? You can't? - Then try first reading SQL statements, - fetches, buffer and parser outputs or - any other outputs. - -If not options are set, menu options will be used. - -The server has a unique identifier, which is -"uuid:b120ba52-d88d-4500-9b64-888971d83fd3". Other devices in the network can -find and identify the VDR UPnP Server with this ID. However, the server should -be found automatically and being listed under the supported media server -devices. If not, please report this as a bug on the project homepage or send an -email to the developers of this plugin with the full device description and, if -applicable, the errors thrown by the media player device and/or the server. - - -Dependencies: - -This plugin is tested with and requires the following libraries to work: - -libupnp-1.6.6 The UPnP SDK -libsqlite-3.6 SQLite 3 Database -libavcodec-svn20090303 FFMPEG Library for analyzing audio video codecs -libavformat-svn20090303 FFMPEG Library for analyzing audio video formats -boost::spirit Grammar parser -boost::function Boost function library -boost::bind Boost bind library - -The boost libraries are usually available in a packed version, so that only a -single installation is required. The FFMPEG libraries comes with FFMPEG itself. - -ATTENTION: DO NOT USE ANOTHER VERSION OF LIBUPNP. - -libupnp-1.8.0 is known not to work with this plugin! Versions below 1.6.6 may -work. However, there may exist some unknown issues. - -If you want to know everything about the code, please see the source code -documentation at http://upnp.vdr-developer.org/docs/ where all public members -are explained. - -I appreciate, if you help making the plugin better. If you find any project -related errors or missing features, please open a new ticket at the plugin -website with a detailed description of what you want or what happened. - - -Patching the libupnp: - -If you have a DLNA compliant device such as TVs or streaming clients, you may -require a patched version of libupnp. You can download the patch on the project -website. \ No newline at end of file diff --git a/channelmap.conf.example b/channelmap.conf.example deleted file mode 100644 index 6e541d5..0000000 --- a/channelmap.conf.example +++ /dev/null @@ -1,30 +0,0 @@ -##################################################### -# # -# VDR UPnP/DLNA Plugin # -# # -# Channel mapping # -# # -##################################################### -# -# Default behavior of the plugin is that it will load -# all channels from VDRs channels.conf and creates -# a Video Broadcast item for every single channel -# -# It can be controlled by combining or excluding -# certain channels in this configuration file -# -# Syntax: -# -# Each rule must be written on a separate line -# -# Combine multiple channels (at least 2) -# :[:] -# -# Example: T-8468-514-516:C-8468-514-516:S-8468-514-516 -# This will combine three channels to one metadata item -# -# Exclude a channel from list -# - -# -# Example: -T-8468-514-516 -# This will exclude that channel from loading diff --git a/common.cpp b/common.cpp deleted file mode 100644 index 513317d..0000000 --- a/common.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * File: common.cpp - * Author: savop - * - * Created on 17. April 2009, 20:53 - */ - -#include -#include "common.h" -#include "config.h" - -#define MESSAGE_SIZE 256 - -void message(int Level, const char* , int , const char* Format, ...){ - if(Level && cUPnPConfig::verbosity >= Level){ - va_list ap; - char Message[MESSAGE_SIZE]; - - snprintf(Message, sizeof(Message), "[%d] %s", cThread::ThreadId(), Format); - va_start(ap, Format); - vsyslog(LOG_NOTICE, Message, ap); - va_end(ap); - } -} \ No newline at end of file diff --git a/common.h b/common.h deleted file mode 100644 index 7a19aa1..0000000 --- a/common.h +++ /dev/null @@ -1,799 +0,0 @@ -/* - * File: common.h - * Author: savop - * - * Created on 19. April 2009, 15:22 - */ - -#ifndef _COMMON_H -#define _COMMON_H - -#include "util.h" -#include -#include -#include -#include -#include - -/**************************************************** - * - * Table of contents - * - * This file includes all (or at least most) constant - * definitions for this plugin. As was growing very - * fast, I decided to insert this table of contents - * for faster navigations. However, you have to scroll - * on your own. - * - * 0. Global constants - * 1. VDR and the VDR subsystem - * 1.1 Versioning - * 1.2 Logging - * 1.3 Plugin constants - * 1.4 Plugin setup - * 2. UPnP - * 2.1 UPnP Namespaces - * 2.2 Directory hierarchy - * 2.3 internal Webserver - * 2.4 Device description - * 2.5 Connection Manager Service (CMS) - * 2.6 Content Directory Service (CDS) - * 2.7 UPnP AV Transport (AVT) - * 2.8 Media classes - * 2.9 Storage Media - * 2.10 Known Errors - * 2.11 Write Status - * 2.12 DIDL Properties - * 3. DLNA - * 3.1 Protocol Info Fields - * 3.2 Protocol Info Flags - * 3.3 Media Profiles - * 3.4 Container types - * 3.5 Device types - * 4. SQLite - * 4.1 Database setup - * - ****************************************************/ - -/**************************************************** - * - * 0. Global constants - * - ****************************************************/ - -#define IN -#define OUT -#define INOUT - -#define TOSTRING(s) #s - -#define FALSE 0 -#define TRUE 1 - -#define bool_t uint8_t - -/** - * Translation with gettext() - */ -#ifndef _ -#define _(s) gettext(s) -#endif - -#define KB(i) i*1024 -#define MB(i) i*KB(1024) - -#define SIZEOF_UUID_STRING 37 // 00000000-0000-0000-0000-000000000000 = 32 + 4 + 1 - -#define strdup0(s) (s!=NULL?strdup(s):NULL) - -#define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL -#define prop(s) substr(s, 0, strchr(s,'@')-s) - -#ifdef WITHOUT_AUDIO - #define WITHOUT_RADIO - #define WITHOUT_CUSTOM_AUDIO -#endif - -#ifdef WITHOUT_VIDEO - #define WITHOUT_TV - #define WITHOUT_RECORDS - #define WITHOUT_CUSTOM_VIDEO -#endif - -void message(int level, const char* File, int Line, const char* Format, ...) __attribute__ ((format (printf, 4, 5))); - -/**************************************************** - * - * 1. VDR and the VDR subsystem - * - ****************************************************/ - -//#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr" -//#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts" -#define VDR_MAX_FILES_PER_TSRECORDING 65535 -#define VDR_MAX_FILES_PER_PESRECORDING 255 -//#define VDR_FILENAME_BUFSIZE 2048 - -/**************************************************** - * - * 1.1 Versioning - * - ****************************************************/ - -#define VERSION_INT(maj, min, mic) (maj<<16 | min<<8 | mic) -#define VERSION_DOT(maj, min, mic) maj ##.## min ##.## mic -#define VERSION_STR(maj, min, mic) TOSTRING(maj.min.mic) - -/* If any changes on the version number are commited, please change the version - * string in the main file "upnp.c" as well to avoid errors with the makefile */ -#define PLUGIN_VERSION_MAJOR 0 -#define PLUGIN_VERSION_MINOR 0 -#define PLUGIN_VERSION_MICRO 2 -/* The plugin version as dot-separated string */ -#define PLUGIN_VERSION VERSION_STR(PLUGIN_VERSION_MAJOR, \ - PLUGIN_VERSION_MINOR, \ - PLUGIN_VERSION_MICRO) -/* The plugin version as integer representation */ -#define PLUGIN_VERSION_INT VERSION_INT(PLUGIN_VERSION_MAJOR, \ - PLUGIN_VERSION_MINOR, \ - PLUGIN_VERSION_MICRO) - -/**************************************************** - * - * 1.2 Logging - * - ****************************************************/ - -/** - * Log errors - * - * Errors are critical problems which cannot handled by the server and needs - * the help by the user. - */ -#define ERROR(s...) esyslog("UPnP server error:" s) -/** - * Log warnings - * - * Warnings indicate problems with the server which can be handled - * by the server itself or are not critical to the servers functionality - */ -#define WARNING(s...) isyslog("UPnP server warning: " s) -/** - * Log messages - * - * Messages are additional information about the servers behavior. This will - * be useful for debugging. - */ -#ifndef DEBUG -#define MESSAGE(l,s...) message(l,__FILE__, __LINE__, "UPnP server message: " s) -#else -#define MESSAGE(l,s...) dsyslog("UPnP server message: " s) -#endif - - -/** - * Define at which level the different messages will be printed - * - * The log levels reach from 1 to 5, where 1 is the highest log - * priority and 5 the lowest. 0 will deactivate the logging of - * the message. If you want to specifiy a certain level, add - * 'v' options as many as required for the log level. - * - * @example - * - \-v Show warnings - * - \-vv Log level 1 - * - \-vvv Log level 2 - * - \-vvvv Log level 3 - * - \-vvvvv Log level 4 - * - \-vvvvvv Log level 5 - */ -#define VERBOSE_SQL 4 ///< SQL messages (open DB, close DB etc.) -#define VERBOSE_SQL_FETCHES 0 ///< SQL fetch messages (SELECT only) -#define VERBOSE_SQL_STATEMENTS 0 ///< all SQL statements -#define VERBOSE_DIDL 4 ///< print DIDL related messages -#define VERBOSE_LIVE_TV 3 ///< print live TV related messages -#define VERBOSE_RECORDS 3 ///< print messages related to records -#define VERBOSE_CUSTOMFILES 3 ///< print messages related to custom files and sometimes records -#define VERBOSE_SDK 1 ///< print important messages of the program flow -#define VERBOSE_EPG_UPDATES 3 ///< show information on EPG changes -#define VERBOSE_WEBSERVER 2 ///< print actions done by the webserver -#define VERBOSE_MODIFICATIONS 2 ///< show modifications to objects or anything else -#define VERBOSE_METADATA 4 ///< print additional metadata information -#define VERBOSE_CUSTOM_OUTPUT 5 ///< everything else... -#define VERBOSE_PARSERS 5 ///< print the parsers output -#define VERBOSE_BUFFERS 4 ///< print the buffer output -#define VERBOSE_CDS 2 ///< print messages from the content directory -#define VERBOSE_CMS 2 ///< print messages from the connection manager -#define VERBOSE_OBJECTS 3 ///< print messages related to objects - -/**************************************************** - * - * 1.3 Plugin constants - * - ****************************************************/ - -/* The authors of the plugin */ -#define PLUGIN_AUTHORS "Andreas Günther, Denis Loh" -/* The web site of the plugin */ -#define PLUGIN_WEB_PAGE "http://upnp.methodus.de" -/* A small discription of the plugin, which is also used as the device description */ -#define PLUGIN_DESCRIPTION "UPnP/DLNA compliant Media Server functionality for VDR" -/* The short plugin name. This is used as the main menu of VDR */ -#define PLUGIN_SHORT_NAME "DLNA/UPnP" -/* A somewhat longer name, a.k.a device name */ -#define PLUGIN_NAME "VDR DLNA/UPnP Media Server" -/* Where the plugin can be downloaded */ -#define PLUGIN_DOWNLOAD_PAGE PLUGIN_WEB_PAGE - -/**************************************************** - * - * 1.4 Plugin setup - * - ****************************************************/ - -#define SETUP_SERVER_ENABLED "Server.Enabled" -#define SETUP_SERVER_INT "Server.Int" -#define SETUP_SERVER_PORT "Server.Port" -#define SETUP_SERVER_AUTO "Server.AutoDetect" -#define SETUP_SERVER_ADDRESS "Server.Address" -#define SETUP_WEBSERVER_DIR "Webserver.Directory" -#define SETUP_DATABASE_DIR "Database.Directory" - -/* The server port range where the server interacts with clients */ -#define SERVER_MIN_PORT 49152 -#define SERVER_MAX_PORT 65535 - -#define RECEIVER_LIVEBUFFER_SIZE MB(1) -#define RECEIVER_OUTPUTBUFFER_SIZE MB(1) -#define RECEIVER_RINGBUFFER_MARGIN 10*TS_SIZE - -/**************************************************** - * - * 2. UPnP - * - ****************************************************/ - -/*The maximum size of the device description file - *must NOT exceed 20KB including HTTP headers - */ -#define UPNP_DEVICE_DESCRIPTION_MAX_LEN KB(20) -/* The maximum size of the SOAP requests */ -#define UPNP_SOAP_MAX_LEN KB(20) -/* The max age of announcements in seconds */ -#define UPNP_ANNOUNCE_MAX_AGE 1800 -/* Max resources per object including - * preview images and thumbnails - */ -#define UPNP_MAX_RESOURCES_PER_OBJECT 16 - -enum UPNP_RESOURCE_TYPES { - UPNP_RESOURCE_CHANNEL, - UPNP_RESOURCE_RECORDING, - UPNP_RESOURCE_FILE, - UPNP_RESOURCE_URL -}; - -/**************************************************** - * - * 2.1 Namespaces - * - ****************************************************/ - -#define UPNP_XMLNS_UPNP "urn:schemas-upnp-org:metadata-1-0/upnp/" -#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" -#define UPNP_XMLNS_DLNA_META "urn:schemas-dlna-org:metadata-1-0/" -#define UPNP_XMLNS_UPNP_DEV "urn:schemas-upnp-org:device-1-0" -#define UPNP_XMLNS_DLNA_DEV "urn:schemas-dlna-org:device-1-0" -#define UPNP_XMLNS_DUBLINCORE "http://purl.org/dc/elements/1.1/" - -#define UPNP_XMLNS_PREFIX_UPNP "upnp" -#define UPNP_XMLNS_PREFIX_DC "dc" -#define UPNP_XMLNS_PREFIX_DIDL "" -#define UPNP_XMLNS_PREFIX_DLNA "dlna" - -/**************************************************** - * - * 2.2 Directory hierarchy - * - ****************************************************/ - -#define UPNP_DIR_CONTROL "/control" -#define UPNP_DIR_EVENT "/event" -#define UPNP_DIR_XML "/xml" -#define UPNP_DIR_SHARES "/shares" -#define UPNP_DIR_PRESENTATION "/http" -#define UPNP_DIR_ICONS "/icons" - -/**************************************************** - * - * 2.3 internal webserver - * - ****************************************************/ - -#define UPNP_WEB_MAX_FILE_HANDLES 512 - -#define UPNP_WEB_PRESENTATION_URL "/index.html" -#define UPNP_WEB_SERVER_ROOT_DIR UPNP_DIR_PRESENTATION - -enum UPNP_WEB_METHODS { - UPNP_WEB_METHOD_BROWSE, - UPNP_WEB_METHOD_SHOW, - UPNP_WEB_METHOD_STREAM, - UPNP_WEB_METHOD_SEARCH, - UPNP_WEB_METHOD_DOWNLOAD -}; - -/**************************************************** - * - * 2.4 Device description - * - ****************************************************/ - -/*The device type of the server*/ -#define UPNP_DEVICE_TYPE "urn:schemas-upnp-org:device:MediaServer:1" -/*Path to device description*/ -#define UPNP_DEVICE_DESCRIPTION_PATH UPNP_WEB_SERVER_ROOT_DIR "/ms_desc.xml" -/*Values to identify device and services*/ -#define UPNP_DEVICE_UDN "uuid:b120ba52-d88d-4500-9b64-888971d83fd3" -/* The friendly device name, human readable */ -#define UPNP_DEVICE_FRIENDLY_NAME PLUGIN_NAME -/* The guys who wrote the crap */ -#define UPNP_DEVICE_MANUFACTURER PLUGIN_AUTHORS -/* The website of the manufacturer, in this case the plugin website */ -#define UPNP_DEVICE_MANUFACTURER_URL PLUGIN_WEB_PAGE -/* There is just the one and only model of the plugin, the plugin itself */ -#define UPNP_DEVICE_MODEL_DESCRIPTION PLUGIN_DESCRIPTION -/* The plugin name... */ -#define UPNP_DEVICE_MODEL_NAME PLUGIN_NAME -/* The plugin version */ -#define UPNP_DEVICE_MODEL_NUMBER PLUGIN_VERSION -/* The website of the plugin, this might be different to the manufactures homepage - * and should redirect to a download mirror where the plugin can be obtained. - */ -#define UPNP_DEVICE_MODEL_URL PLUGIN_DOWNLOAD_PAGE -/* The serial number of the plugin. This is the integer value of the version */ -#define UPNP_DEVICE_SERIAL_NUMBER "VDR_DLNAUPNP_" PLUGIN_VERSION - -#define UPNP_DEVICE_ICON_JPEG_SM UPNP_DIR_ICONS "/upnpIconSm.jpeg" -#define UPNP_DEVICE_ICON_JPEG_LRG UPNP_DIR_ICONS "/upnpIconLrg.jpeg" -#define UPNP_DEVICE_ICON_PNG_SM UPNP_DIR_ICONS "/upnpIconSm.png" -#define UPNP_DEVICE_ICON_PNG_LRG UPNP_DIR_ICONS "/upnpIconLrg.png" - -/**************************************************** - * - * 2.5 DIDL Properties - * - ****************************************************/ - -#define UPNP_OBJECT_ITEM "item" -#define UPNP_OBJECT_CONTAINER "container" - -#define UPNP_PROP_OBJECTID "@id" -#define UPNP_PROP_PARENTID "@parentID" -#define UPNP_PROP_TITLE "dc:title" -#define UPNP_PROP_CREATOR "dc:creator" -#define UPNP_PROP_RESTRICTED "@restricted" -#define UPNP_PROP_WRITESTATUS "upnp:writeStatus" -#define UPNP_PROP_CLASS "upnp:class" -#define UPNP_PROP_CLASSNAME UPNP_PROP_CLASS "@name" -#define UPNP_PROP_CREATECLASS "upnp:createClass" -#define UPNP_PROP_SEARCHCLASS "upnp:searchClass" -#define UPNP_PROP_SCLASSDERIVED UPNP_PROP_SEARCHCLASS "@includeDerived" -#define UPNP_PROP_SCLASSNAME UPNP_PROP_SEARCHCLASS "@name" -#define UPNP_PROP_CCLASSDERIVED UPNP_PROP_CREATECLASS "@includeDerived" -#define UPNP_PROP_CCLASSNAME UPNP_PROP_CREATECLASS "@name" -#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID" -#define UPNP_PROP_SEARCHABLE UPNP_OBJECT_CONTAINER "@searchable" -#define UPNP_PROP_CHILDCOUNT UPNP_OBJECT_CONTAINER "@childcount" -#define UPNP_PROP_RESOURCE "res" -#define UPNP_PROP_PROTOCOLINFO UPNP_PROP_RESOURCE "@protocolInfo" -#define UPNP_PROP_SIZE UPNP_PROP_RESOURCE "@size" -#define UPNP_PROP_DURATION UPNP_PROP_RESOURCE "@duration" -#define UPNP_PROP_BITRATE UPNP_PROP_RESOURCE "@bitrate" -#define UPNP_PROP_SAMPLEFREQUENCE UPNP_PROP_RESOURCE "@sampleFreq" -#define UPNP_PROP_BITSPERSAMPLE UPNP_PROP_RESOURCE "@bitsPerSample" -#define UPNP_PROP_NOAUDIOCHANNELS UPNP_PROP_RESOURCE "@nrAudioChannels" -#define UPNP_PROP_COLORDEPTH UPNP_PROP_RESOURCE "@colorDepth" -#define UPNP_PROP_RESOLUTION UPNP_PROP_RESOURCE "@resolution" -#define UPNP_PROP_GENRE "upnp:genre" -#define UPNP_PROP_LONGDESCRIPTION "upnp:longDescription" -#define UPNP_PROP_PRODUCER "upnp:producer" -#define UPNP_PROP_RATING "upnp:rating" -#define UPNP_PROP_ACTOR "upnp:actor" -#define UPNP_PROP_DIRECTOR "upnp:director" -#define UPNP_PROP_DESCRIPTION "dc:description" -#define UPNP_PROP_PUBLISHER "dc:publisher" -#define UPNP_PROP_LANGUAGE "dc:language" -#define UPNP_PROP_RELATION "dc:relation" -#define UPNP_PROP_STORAGEMEDIUM "upnp:storageMedium" -#define UPNP_PROP_DVDREGIONCODE "upnp:DVDRegionCode" -#define UPNP_PROP_CHANNELNAME "upnp:channelName" -#define UPNP_PROP_SCHEDULEDSTARTTIME "upnp:scheduledStartTime" -#define UPNP_PROP_SCHEDULEDENDTIME "upnp:scheduledEndTime" -#define UPNP_PROP_ICON "upnp:icon" -#define UPNP_PROP_REGION "upnp:region" -#define UPNP_PROP_CHANNELNR "upnp:channelNr" -#define UPNP_PROP_RIGHTS "dc:rights" -#define UPNP_PROP_RADIOCALLSIGN "upnp:radioCallSign" -#define UPNP_PROP_RADIOSTATIONID "upnp:radioStationID" -#define UPNP_PROP_RADIOBAND "upnp:radioBand" -#define UPNP_PROP_CONTRIBUTOR "dc:contributor" -#define UPNP_PROP_DATE "dc:date" -#define UPNP_PROP_ALBUM "upnp:album" -#define UPNP_PROP_ARTIST "upnp:artist" -#define UPNP_PROP_DLNA_CONTAINERTYPE "dlna:container" - -#define UPNP_DIDL_SKELETON ""\ - "" - -/**************************************************** - * - * 2.6 Connection Manager Service (CMS) - * - ****************************************************/ - -/*Path to service description of conection manager service*/ -#define UPNP_CMS_SCPD_URL UPNP_DIR_XML "/cms_scpd.xml" -#define UPNP_CMS_CONTROL_URL UPNP_DIR_CONTROL "/cms_control" -#define UPNP_CMS_EVENT_URL UPNP_DIR_EVENT "/cms_event" -#define UPNP_CMS_SERVICE_ID "urn:upnp-org:serviceId:ConnectionManager" -#define UPNP_CMS_SERVICE_TYPE "urn:schemas-upnp-org:service:ConnectionManager:1" - -/* Compatibility usage only --> See DLNA Profiles */ -#define UPNP_CMS_SUPPORTED_PROTOCOLS "http-get:*:video/mpeg:*," \ - "http-get:*:audio/mpeg:*" - -/**************************************************** - * - * The UPnP CMS actions - * - * This constant definitions represent all actions - * compliant with UPnP ConnectionManager:1 - * - ****************************************************/ - -#define UPNP_CMS_ACTION_GETPROTOCOLINFO "GetProtocolInfo" -#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONIDS "GetCurrentConnectionIDs" -#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONINFO "GetCurrentConnectionInfo" -#define UPNP_CMS_ACTION_PREPAREFORCONNECTION "PrepareForConnection" -#define UPNP_CMS_ACTION_CONNECTIONCOMPLETE "ConnectionComplete" - -/**************************************************** - * - * 2.7 Content Directory Service (CDS) - * - ****************************************************/ - -/*Path to service description of content directory service*/ -#define UPNP_CDS_SCPD_URL UPNP_DIR_XML "/cds_scpd.xml" -#define UPNP_CDS_CONTROL_URL UPNP_DIR_CONTROL "/cds_control" -#define UPNP_CDS_EVENT_URL UPNP_DIR_EVENT "/cds_event" -#define UPNP_CDS_SERVICE_ID "urn:upnp-org:serviceId:ContentDirectory" -#define UPNP_CDS_SERVICE_TYPE "urn:schemas-upnp-org:service:ContentDirectory:1" - -#define UPNP_CDS_SEARCH_CAPABILITIES "" -#define UPNP_CDS_SORT_CAPABILITIES UPNP_PROP_TITLE ","\ - UPNP_PROP_CREATOR ","\ - UPNP_PROP_WRITESTATUS ","\ - UPNP_PROP_DESCRIPTION ","\ - UPNP_PROP_GENRE ","\ - UPNP_PROP_LONGDESCRIPTION ","\ - UPNP_PROP_PUBLISHER - -#define UPNP_DURATION_FORMAT "%5d:%02d:%02d" -#define UPNP_DURATION_FRAME_FORMAT "%5d:%02d:%02d.%03d" -#define UPNP_MAX_METADATA_LENGTH 1024 -#define AVDETECTOR_TIME_BASE 1000 - -/**************************************************** - * - * The UPnP CDS actions - * - * This constant definitions represent all actions - * compliant with UPnP ContentDirectory:1 - * - ****************************************************/ - -#define UPNP_CDS_ACTION_SEARCHCAPABILITIES "GetSearchCapabilities" -#define UPNP_CDS_ACTION_SORTCAPABILITIES "GetSortCapabilities" -#define UPNP_CDS_ACTION_SYSTEMUPDATEID "GetSystemUpdateID" -#define UPNP_CDS_ACTION_BROWSE "Browse" -#define UPNP_CDS_ACTION_SEARCH "Search" -#define UPNP_CDS_ACTION_CREATEOBJECT "CreateObject" -#define UPNP_CDS_ACTION_DESTROYOBJECT "DestroyObject" -#define UPNP_CDS_ACTION_UPDATEOBJECT "UpdateObject" -#define UPNP_CDS_ACTION_IMPORTRESOURCE "ImportResource" -#define UPNP_CDS_ACTION_EXPORTRESOURCE "ExportResource" -#define UPNP_CDS_ACTION_STOPTRANSFERRES "StopTransferResource" -#define UPNP_CDS_ACTION_TRANSFERPROGRESS "GetTransferProgress" -#define UPNP_CDS_ACTION_DELETERESOURCE "DeleteResource" -#define UPNP_CDS_ACTION_CREATEREFERENCE "CreateReference" - -/**************************************************** - * - * 2.8 UPnP AV Transport (AVT) - * - ****************************************************/ - -#define UPNP_AVT_SCPD_URL UPNP_DIR_XML "/avt_scpd.xml" -#define UPNP_AVT_CONTROL_URL UPNP_DIR_CONTROL "/avt_control" -#define UPNP_AVT_EVENT_URL UPNP_DIR_EVENT "/avt_event" -#define UPNP_AVT_SERVICE_ID "urn:upnp-org:serviceID:AVTransport" -#define UPNP_AVT_SERVICE_TYPE "urn:schemas-upnp-org:service:AVTransport:1" - -/**************************************************** - * - * The UPnP AVT actions - * - * This constant definitions represent all actions - * compliant with UPnP AVTransport:1 - * - ****************************************************/ - -/**************************************************** - * - * 2.9 Media classes - * - ****************************************************/ - -#define UPNP_CLASS_OBJECT "object" -#define UPNP_CLASS_ITEM UPNP_CLASS_OBJECT "." "item" -#define UPNP_CLASS_CONTAINER UPNP_CLASS_OBJECT "." "container" -#define UPNP_CLASS_IMAGE UPNP_CLASS_ITEM "." "imageItem" -#define UPNP_CLASS_AUDIO UPNP_CLASS_ITEM "." "audioItem" -#define UPNP_CLASS_VIDEO UPNP_CLASS_ITEM "." "videoItem" -#define UPNP_CLASS_PLAYLIST UPNP_CLASS_ITEM "." "playlistItem" -#define UPNP_CLASS_TEXT UPNP_CLASS_ITEM "." "textItem" -#define UPNP_CLASS_PHOTO UPNP_CLASS_IMAGE "." "photo" -#define UPNP_CLASS_MUSICTRACK UPNP_CLASS_AUDIO "." "musikTrack" -#define UPNP_CLASS_AUDIOBC UPNP_CLASS_AUDIO "." "audioBroadcast" -#define UPNP_CLASS_AUDIOBOOK UPNP_CLASS_AUDIO "." "audioBook" -#define UPNP_CLASS_MOVIE UPNP_CLASS_VIDEO "." "movie" -#define UPNP_CLASS_VIDEOBC UPNP_CLASS_VIDEO "." "videoBroadcast" -#define UPNP_CLASS_MUSICVIDCLIP UPNP_CLASS_VIDEO "." "musicVideoClip" -#define UPNP_CLASS_PERSON UPNP_CLASS_CONTAINER "." "person" -#define UPNP_CLASS_PLAYLISTCONT UPNP_CLASS_CONTAINER "." "playlistContainer" -#define UPNP_CLASS_ALBUM UPNP_CLASS_CONTAINER "." "album" -#define UPNP_CLASS_GENRE UPNP_CLASS_CONTAINER "." "genre" -#define UPNP_CLASS_STORAGESYS UPNP_CLASS_CONTAINER "." "storageSystem" -#define UPNP_CLASS_STORAGEVOL UPNP_CLASS_CONTAINER "." "storageVolume" -#define UPNP_CLASS_STORAGEFOLD UPNP_CLASS_CONTAINER "." "storageFolder" -#define UPNP_CLASS_MUSICARTIST UPNP_CLASS_PERSON "." "musicArtist" -#define UPNP_CLASS_MUSICALBUM UPNP_CLASS_ALBUM "." "musicAlbum" -#define UPNP_CLASS_PHOTOALBUM UPNP_CLASS_ALBUM "." "photoAlbum" -#define UPNP_CLASS_MUSICGENRE UPNP_CLASS_GENRE "." "musicGenre" -#define UPNP_CLASS_MOVIEGENRE UPNP_CLASS_GENRE "." "movieGenre" - -/**************************************************** - * - * 2.10 Storage media - * - ****************************************************/ - -#define UPNP_STORAGE_UNKNOWN "UNKNOWN" -#define UPNP_STORAGE_DV "DV" -#define UPNP_STORAGE_MINI_DV "MINI-DV" -#define UPNP_STORAGE_VHS "VHS" -#define UPNP_STORAGE_W_VHS "W-VHS" -#define UPNP_STORAGE_S_VHS "S-VHS" -#define UPNP_STORAGE_D_VHS "D-VHS" -#define UPNP_STORAGE_VHSC "VHSC" -#define UPNP_STORAGE_VIDEO8 "VIDEO8" -#define UPNP_STORAGE_HI8 "HI8" -#define UPNP_STORAGE_CD_ROM "CD-ROM" -#define UPNP_STORAGE_CD_DA "CD-DA" -#define UPNP_STORAGE_CD_R "CD-R" -#define UPNP_STORAGE_CD_RW "CD-RW" -#define UPNP_STORAGE_VIDEO_CD "VIDEO-CD" -#define UPNP_STORAGE_SACD "SACD" -#define UPNP_STORAGE_MD_AUDIO "MD-AUDIO" -#define UPNP_STORAGE_MD_PICTURE "MD-PICTURE" -#define UPNP_STORAGE_DVD_ROM "DVD-ROM" -#define UPNP_STORAGE_DVD_VIDEO "DVD-VIDEO" -#define UPNP_STORAGE_DVD_R_MINUS "DVD-R" -#define UPNP_STORAGE_DVD_RW_PLUS "DVD+RW" -#define UPNP_STORAGE_DVD_RW_MINUS "DVD-RW" -#define UPNP_STORAGE_DVD_RAM "DVD-RAM" -#define UPNP_STORAGE_DVD_AUDIO "DVD-AUDIO" -#define UPNP_STORAGE_DAT "DAT" -#define UPNP_STORAGE_LD "LD" -#define UPNP_STORAGE_HDD "HDD" -#define UPNP_STORAGE_MICRO_MV "MICRO-MV" -#define UPNP_STORAGE_NETWORK "NETWORK" - -/**************************************************** - * - * 2.11 Known Errors - * - ****************************************************/ - -/* Errors 401-404, 501 are already defined in - * Intel SDK, however 403 MUST NOT USED. - */ - -/****** 600 Common Action Errors ******/ - -#define UPNP_SOAP_E_ARGUMENT_INVALID 600 -#define UPNP_SOAP_E_ARGUMENT_OUT_OF_RANGE 601 -#define UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED 602 -#define UPNP_SOAP_E_OUT_OF_MEMORY 603 -#define UPNP_SOAP_E_HUMAN_INTERVENTION 604 -#define UPNP_SOAP_E_STRING_TO_LONG 605 -#define UPNP_SOAP_E_NOT_AUTHORIZED 606 -#define UPNP_SOAP_E_SIGNATURE_FAILURE 607 -#define UPNP_SOAP_E_SIGNATURE_MISSING 608 -#define UPNP_SOAP_E_NOT_ENCRYPTED 609 -#define UPNP_SOAP_E_INVALID_SEQUENCE 610 -#define UPNP_SOAP_E_INVALID_CONTROL_URL 611 -#define UPNP_SOAP_E_NO_SUCH_SESSION 612 - -/****** 700 Action specific Errors ******/ - -#define UPNP_CDS_E_NO_SUCH_OBJECT 701 -#define UPNP_CDS_E_INVALID_CURRENT_TAG 702 -#define UPNP_CDS_E_INVALID_NEW_TAG 703 -#define UPNP_CDS_E_REQUIRED_TAG 704 -#define UPNP_CDS_E_READ_ONLY_TAG 705 -#define UPNP_CDS_E_PARAMETER_MISMATCH 706 -#define UPNP_CDS_E_INVALID_SEARCH_CRITERIA 708 -#define UPNP_CDS_E_INVALID_SORT_CRITERIA 709 -#define UPNP_CDS_E_NO_SUCH_CONTAINER 710 -#define UPNP_CDS_E_RESTRICTED_OBJECT 711 -#define UPNP_CDS_E_BAD_METADATA 712 -#define UPNP_CDS_E_RESTRICTED_PARENT 713 -#define UPNP_CDS_E_NO_SUCH_SOURCE_RESOURCE 714 -#define UPNP_CDS_E_RESOURCE_ACCESS_DENIED 715 -#define UPNP_CDS_E_TRANSFER_BUSY 716 -#define UPNP_CDS_E_NO_SUCH_FILE_TRANSFER 717 -#define UPNP_CDS_E_NO_SUCH_DESTINATION_RESOURCE 718 -#define UPNP_CDS_E_DEST_RESOURCE_ACCESS_DENIED 719 -#define UPNP_CDS_E_CANT_PROCESS_REQUEST 720 - -#define UPNP_CMS_E_INCOMPATIBLE_PROTOCOL_INFO 701 -#define UPNP_CMS_E_INCOMPATIBLE_DIRECTIONS 702 -#define UPNP_CMS_E_INSUFFICIENT_RESOURCES 703 -#define UPNP_CMS_E_LOCAL_RESTRICTIONS 704 -#define UPNP_CMS_E_ACCESS_DENIED 705 -#define UPNP_CMS_E_INVALID_CONNECTION_REFERENCE 706 -#define UPNP_CMS_E_NOT_IN_NETWORK 707 - -/**************************************************** - * - * 2.12 Write Status - * - ****************************************************/ - -enum UPnPWriteStatus { - WS_UNKNOWN=0, - WS_WRITABLE, - WS_PROTECTED, - WS_NOT_WRITABLE, - WS_MIXED -}; - -/**************************************************** - * - * 3. DLNA - * - ****************************************************/ - -#define DLNA_PROTOCOL_VERSION_MAJOR 1 -#define DLNA_PROTOCOL_VERSION_MINOR 5 -#define DLNA_PROTOCOL_VERSION_MICRO 0 - -#define DLNA_PROTOCOL_VERSION_INT VERSION_INT(DLNA_PROTOCOL_VERSION_MAJOR, \ - DLNA_PROTOCOL_VERSION_MINOR, \ - DLNA_PROTOCOL_VERSION_MICRO) - -#define DLNA_PROTOCOL_VERSION_STR VERSION_STR(DLNA_PROTOCOL_VERSION_MAJOR, \ - DLNA_PROTOCOL_VERSION_MINOR, \ - DLNA_PROTOCOL_VERSION_MICRO) - -/**************************************************** - * - * 3.1 Protocol info fields - * - ****************************************************/ - -/** - * ATTENTION - * - * The following operation field assumes that s0 is NOT changing. Only changes to sN are permitted. - * If s0 and/or sN changes these fields must be set to false. Use DLNA_FLAG_*_BASED_SEEK flags instead. - */ -#define DLNA_OPERATION_NONE 00 ///< No seek operations supported -#define DLNA_OPERATION_TIME_SEEK_RANGE 10 ///< is the server supporting time based seeks? -#define DLNA_OPERATION_RANGE 01 ///< or byte based seeks? - -#define DLNA_CONVERSION_TRANSCODED 1 ///< the content was converted from one media format to another -#define DLNA_CONVERSION_NONE 0 ///< the content is available without conversion - -#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; ///< 1 is required, but omited in the PS parameter - -#define DLNA_TRANSFER_PROTOCOL_HTTP 1 ///< use http tranfer -#define DLNA_TRANSFER_PROTOCOL_RTP 2 ///< use rtp tranfer - -/**************************************************** - * - * 3.2 Protocol info flags - * - ****************************************************/ - -#define DLNA_FLAG_SENDER_PACED 1 << 31 ///< is the server setting the pace (i.e. RTP)? -#define DLNA_FLAG_TIME_BASED_SEEK 1 << 30 ///< is the server supporting time based seeks? -#define DLNA_FLAG_BYTE_BASED_SEEK 1 << 29 ///< or byte based seeking? -#define DLNA_FLAG_PLAY_CONTAINER 1 << 28 ///< is it possible to play all contents of a container? -#define DLNA_FLAG_S0_INCREASE 1 << 27 ///< is the beginning changing (time shift)? -#define DLNA_FLAG_SN_INCREASE 1 << 26 ///< is the end changing (live-TV)? -#define DLNA_FLAG_RTSP_PAUSE 1 << 25 ///< is pausing rtp streams permitted? -#define DLNA_FLAG_STREAMING_TRANSFER 1 << 24 ///< is the transfer a stream (Audio/AV)? -#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 << 23 ///< is the transfer interactiv (printings)? -#define DLNA_FLAG_BACKGROUND_TRANSFER 1 << 22 ///< is the tranfer done in background (downloaded)? -#define DLNA_FLAG_CONNECTION_STALLING 1 << 21 ///< can the connection be paused on HTTP streams? -#define DLNA_FLAG_VERSION_1_5 1 << 20 ///< does the server complies with DLNA V1.5 -#define DLNA_FLAG_CLEARTEXT_CONTENT 1 << 16 ///< (Link Protection) currently not used -#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 ///< (Link Protection) currently not used -#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 ///< (Link Protection) currently not used - -#define DLNA_SUPPORTED_FLAGS DLNA_FLAG_BYTE_BASED_SEEK | \ - DLNA_FLAG_SN_INCREASE | \ - DLNA_FLAG_STREAMING_TRANSFER | \ - DLNA_FLAG_BACKGROUND_TRANSFER | \ - DLNA_FLAG_CONNECTION_STALLING | \ - DLNA_FLAG_VERSION_1_5 - -/**************************************************** - * - * 3.3 Media profiles - * - ****************************************************/ - -/** @see dlna/profiles.h */ - -/**************************************************** - * - * 3.4 Container types - * - ****************************************************/ - -enum DLNAContainerTypes { - TUNER_1_0 -}; - -#define DLNA_CONTAINER_TUNER "Tuner_1_0" // The DLNA container type for a tuner - -/**************************************************** - * - * 3.5 Device types - * - ****************************************************/ - -#define DLNA_DEVICE_DMS_1_0 "DMS-1.00" -#define DLNA_DEVICE_DMS_1_5 "DMS-1.50" - -/**************************************************** - * - * 4. SQLite - * - ****************************************************/ -/**************************************************** - * - * 4.1 Database setup - * - ****************************************************/ - -#define SQLITE_DB_FILE "metadata.db" - -/**************************************************** - * - * Please see database.h for further definitions, - * SQL statements and triggers - * - ****************************************************/ - -#endif /* _COMMON_H */ - diff --git a/database/database.cpp b/database/database.cpp deleted file mode 100644 index c58294d..0000000 --- a/database/database.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* - * File: database.h - * Author: savop - * - * Created on 3. September 2009, 22:20 - */ - -#include -#include -#include -#include "database.h" -#include "../common.h" -#include "object.h" -#include "../upnp.h" -#include "config.h" - -cSQLiteDatabase* cSQLiteDatabase::mInstance = NULL; - -cSQLiteDatabase::cSQLiteDatabase(){ - this->mActiveTransaction = false; - this->mDatabase = NULL; - this->mLastRow = NULL; - this->mRows = NULL; -} - -cSQLiteDatabase::~cSQLiteDatabase(){ - sqlite3_close(this->mDatabase); -} - -cSQLiteDatabase* cSQLiteDatabase::getInstance(){ - if(cSQLiteDatabase::mInstance == NULL){ - cSQLiteDatabase::mInstance = new cSQLiteDatabase; - DatabaseLocker.Wait(); - cSQLiteDatabase::mInstance->initialize(); - } - - if(cSQLiteDatabase::mInstance != NULL) - return cSQLiteDatabase::mInstance; - else - return NULL; -} - -int cSQLiteDatabase::exec(const char* Statement){ - char* Error; - if(!this->mDatabase){ - ERROR("Database not open. Cannot continue"); - return -1; - } - this->mRows = new cRows; - MESSAGE(VERBOSE_SQL_STATEMENTS,"SQLite: %s", Statement); - if(sqlite3_exec(this->mDatabase, Statement, cSQLiteDatabase::getResultRow, (cSQLiteDatabase*)this, &Error)!=SQLITE_OK){ - ERROR("Database error: %s", Error); - ERROR("Statement was: %s", Statement); - delete this->mRows; this->mRows = NULL; - sqlite3_free(Error); - return -1; - } - - sqlite3_free(Error); - return 0; -} - -const char* cSQLiteDatabase::sprintf(const char* Format, ...){ - va_list vlist; - va_start(vlist, Format); - char* SQLStatement = sqlite3_vmprintf(Format, vlist); - va_end(vlist); - return SQLStatement; -} - -int cSQLiteDatabase::execStatement(const char* Statement, ...){ - va_list vlist; - va_start(vlist, Statement); - char* SQLStatement = sqlite3_vmprintf(Statement, vlist); - va_end(vlist); - int ret = this->exec(SQLStatement); - sqlite3_free(SQLStatement); - return ret; -} - -int cSQLiteDatabase::getResultRow(void* DB, int NumCols, char** Values, char** ColNames){ - cRow* Row = new cRow; - Row->ColCount = NumCols; - Row->Columns = new char*[NumCols]; - Row->Values = new char*[NumCols]; - for(int i=0; i < NumCols; i++){ - Row->Columns[i] = strdup0(ColNames[i]); - Row->Values[i] = strdup0(Values[i]); - } - cSQLiteDatabase* Database = (cSQLiteDatabase*)DB; - Database->mRows->Add(Row); - return 0; -} - -cRows::cRows(){ - this->mLastRow = NULL; -} - -cRows::~cRows(){ - this->mLastRow = NULL; -} - -bool cRows::fetchRow(cRow** Row){ - if(this->mLastRow==NULL){ - this->mLastRow = this->First(); - } - else { - this->mLastRow = this->Next(this->mLastRow); - } - if(this->mLastRow != NULL){ - *Row = this->mLastRow; - return true; - } - else { - *Row = NULL; - return false; - } - return false; -} - -cRow::cRow(){ - this->currentCol = 0; - this->ColCount = 0; - this->Columns = NULL; - this->Values = NULL; -} - -cRow::~cRow(){ - delete [] this->Columns; - delete [] this->Values; - this->Columns = NULL; - this->Values = NULL; -} - -bool cRow::fetchColumn(cString* Column, cString* Value){ - char *Col, *Val; - bool ret = this->fetchColumn(&Col, &Val); - if(ret){ - *Column = cString(Col,true); - *Value = cString(Val,true); - } - return ret; -} - - -bool cRow::fetchColumn(char** Column, char** Value){ - if(currentCol>=this->ColCount){ - return false; - } - MESSAGE(VERBOSE_SQL_FETCHES,"Fetching column %s='%s' (%d/%d)", this->Columns[currentCol], this->Values[currentCol], currentCol+1, this->ColCount); - *Column = strdup0(this->Columns[currentCol]); - if(this->Values[currentCol]){ - *Value = strcasecmp(this->Values[currentCol],"NULL")?strdup(this->Values[currentCol]):NULL; - } - else { - *Value = NULL; - } - currentCol++; - return true; -} - -int cSQLiteDatabase::initialize(){ - int ret; - const char* dbdir = (cUPnPConfig::get()->mDatabaseFolder) ? cUPnPConfig::get()->mDatabaseFolder : cPluginUpnp::getConfigDirectory(); - cString File = cString::sprintf("%s/%s", dbdir, SQLITE_DB_FILE); - if((ret = sqlite3_open(File, &this->mDatabase))){ - ERROR("Unable to open database file %s (Error code: %d)!", *File, ret); - sqlite3_close(this->mDatabase); - return -1; - } - MESSAGE(VERBOSE_SDK,"Database file %s opened.", *File); - if(this->initializeTables()){ - ERROR("Error while creating tables"); - return -1; - } - else if(this->initializeTriggers()){ - ERROR("Error while setting triggers"); - return -1; - } - return 0; -} - -void cSQLiteDatabase::startTransaction(){ - if(this->mActiveTransaction){ - if(this->mAutoCommit){ - this->commitTransaction(); - } - else { - this->rollbackTransaction(); - } - } - this->execStatement("BEGIN TRANSACTION"); - MESSAGE(VERBOSE_SQL,"Start new transaction"); - this->mActiveTransaction = true; -} - -void cSQLiteDatabase::commitTransaction(){ - this->execStatement("COMMIT TRANSACTION"); - MESSAGE(VERBOSE_SQL,"Commited transaction"); - this->mActiveTransaction = false; -} - -void cSQLiteDatabase::rollbackTransaction(){ - this->execStatement("ROLLBACK TRANSACTION"); - MESSAGE(VERBOSE_SQL,"Rolled back transaction"); - this->mActiveTransaction = false; -} - -int cSQLiteDatabase::initializeTables(){ - int ret = 0; - this->startTransaction(); - if(this->execStatement(SQLITE_CREATE_TABLE_ITEMFINDER)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_SYSTEM)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_PRIMARY_KEYS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_ALBUMS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_AUDIOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_AUDIOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_CONTAINER)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_IMAGEITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_MOVIES)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_OBJECTS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_PHOTOS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_PLAYLISTS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_RESOURCES)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_SEARCHCLASS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_VIDEOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_CREATE_TABLE_VIDEOITEMS)==-1) ret = -1; - if(ret){ - this->rollbackTransaction(); - } - else { - this->commitTransaction(); - } - return ret; -} - -int cSQLiteDatabase::initializeTriggers(){ - int ret = 0; - this->startTransaction(); - if(this->execStatement(SQLITE_TRIGGER_D_OBJECTS_ITEMFINDER)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_UPDATE_SYSTEM)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_UPDATE_OBJECTID)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_ALBUMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_PLAYLISTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_IMAGEITEMS_PHOTOS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_AUDIOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_IMAGEITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_ITEMS_VIDEOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_OBJECTS_OBJECTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_CONTAINERS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_OBJECT_RESOURCES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_VIDEOITEMS_MOVIES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_D_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_ALBUMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_PLAYLISTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_IMAGEITEMS_PHOTOS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_AUDIOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_IMAGEITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_ITEMS_VIDEOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_OBJECTS_OBJECTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_CONTAINERS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_OBJECT_RESOURCES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_VIDEOITEMS_MOVIES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_I_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_AUDIOITEMS_AUDIOBROADCASTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_ALBUMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_PLAYLISTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_CONTAINERS_SEARCHCLASSES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_IMAGEITEMS_PHOTOS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_AUDIOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_IMAGEITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_ITEMS_VIDEOITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_OBJECTS_OBJECTS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_CONTAINERS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_ITEMS)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_OBJECT_RESOURCES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_VIDEOITEMS_MOVIES)==-1) ret = -1; - if(this->execStatement(SQLITE_TRIGGER_U_VIDEOITEMS_VIDEOBROADCASTS)==-1) ret = -1; - if(ret){ - this->rollbackTransaction(); - } - else { - this->commitTransaction(); - } - return ret; -} - -long cSQLiteDatabase::getLastInsertRowID() const { - return (long)sqlite3_last_insert_rowid(this->mDatabase); -} \ No newline at end of file diff --git a/database/metadata.cpp b/database/metadata.cpp deleted file mode 100644 index a9d780f..0000000 --- a/database/metadata.cpp +++ /dev/null @@ -1,575 +0,0 @@ -/* - * File: metadata.cpp - * Author: savop - * - * Created on 28. Mai 2009, 16:50 - */ - -#include -#include -#include -#include "object.h" -#include "resources.h" -#include "metadata.h" -#include "../common.h" -#include "search.h" -#include -#include -#include -#include - -#define KEY_SYSTEM_UPDATE_ID "SystemUpdateID" - - /**********************************************\ - * * - * Media database * - * * - \**********************************************/ - -cMediaDatabase::cMediaDatabase(){ - this->mSystemUpdateID = 0; - this->mLastInsertObjectID = 0; - this->mDatabase = cSQLiteDatabase::getInstance(); - this->mObjects = new cHash; - this->mFactory = cUPnPObjectFactory::getInstance(); - this->mFactory->registerMediator(UPNP_CLASS_ITEM, new cUPnPItemMediator(this)); - this->mFactory->registerMediator(UPNP_CLASS_CONTAINER, new cUPnPContainerMediator(this)); - this->mFactory->registerMediator(UPNP_CLASS_VIDEO, new cUPnPVideoItemMediator(this)); - this->mFactory->registerMediator(UPNP_CLASS_VIDEOBC, new cUPnPVideoBroadcastMediator(this)); - this->mFactory->registerMediator(UPNP_CLASS_MOVIE, new cUPnPMovieMediator(this)); -} - -cMediaDatabase::~cMediaDatabase(){ - delete this->mDatabase; -} - -bool cMediaDatabase::init(){ - MESSAGE(VERBOSE_SDK,"Initializing..."); - if(this->prepareDatabase()){ - ERROR("Initializing of database failed."); - return false; - } -#ifndef WITHOUT_TV - if(this->loadChannels()){ - ERROR("Loading channels failed"); - return false; - } -#endif -#ifndef WITHOUT_RECORDS - if(this->loadRecordings()){ - ERROR("Loading records failed"); - return false; - } -#endif - return true; -} - -void cMediaDatabase::updateSystemID(){ - this->mDatabase->execStatement("INSERT OR REPLACE INTO %s (Key,Value) VALUES (%Q,%d)", - SQLITE_TABLE_SYSTEM, - KEY_SYSTEM_UPDATE_ID, - this->getSystemUpdateID()+1); -} - -const char* cMediaDatabase::getContainerUpdateIDs(){ - return ""; -} - -unsigned int cMediaDatabase::getSystemUpdateID(){ - if(this->mDatabase->execStatement("SELECT Value FROM %s WHERE Key=%Q", - SQLITE_TABLE_SYSTEM, - KEY_SYSTEM_UPDATE_ID)){ - ERROR("Error while executing statement"); - return 0; - } - cRows* Rows = this->mDatabase->getResultRows(); - cRow* Row; - cString Column, Value; - if(!Rows->fetchRow(&Row)){ - ERROR("No rows found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, "Value")){ - this->mSystemUpdateID = (unsigned int)atoi(Value); - } - } - return this->mSystemUpdateID; -} - -cUPnPObjectID cMediaDatabase::getNextObjectID(){ - cString Column, Value; - if(this->mDatabase->execStatement("SELECT Key FROM %s WHERE KeyID=%Q", - SQLITE_TABLE_PRIMARY_KEYS, - PK_OBJECTS)){ - ERROR("Error while executing statement"); - return 0; - } - cRows* Rows = this->mDatabase->getResultRows(); - cRow* Row; - int ret = 0; - if(!Rows->fetchRow(&Row)){ - ERROR("No rows found"); - ret = 0; - } - else { - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, "Key")){ - this->mLastInsertObjectID = atoi(Value); - ret = this->mLastInsertObjectID; - } - } - } - delete Rows; - return ret; -} - -int cMediaDatabase::addFastFind(cUPnPClassObject* Object, const char* FastFind){ - if(!Object || !FastFind){ - MESSAGE(VERBOSE_OBJECTS,"Invalid fast find parameters"); - return -1; - } - - if(this->mDatabase->execStatement("INSERT OR REPLACE INTO %s (%s, %s) VALUES (%Q, %Q)", - SQLITE_TABLE_ITEMFINDER, - SQLITE_COL_OBJECTID, - SQLITE_COL_ITEMFINDER, - *Object->getID(), - FastFind)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -cUPnPClassObject* cMediaDatabase::getObjectByFastFind(const char* FastFind){ - if(!FastFind) return NULL; - MESSAGE(VERBOSE_OBJECTS,"Try to find Object with identifier %s", FastFind); - cString Column, Value; - if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%Q", - SQLITE_COL_OBJECTID, - SQLITE_TABLE_ITEMFINDER, - SQLITE_COL_ITEMFINDER, - FastFind)){ - ERROR("Error while executing statement"); - return 0; - } - cRows* Rows = this->mDatabase->getResultRows(); - cRow* Row; - if(!Rows->fetchRow(&Row)){ - ERROR("No rows found"); - return NULL; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ - return this->getObjectByID(atoi(Value)); - } - } - delete Rows; - return NULL; -} - -cUPnPClassObject* cMediaDatabase::getObjectByID(cUPnPObjectID ID){ - MESSAGE(VERBOSE_OBJECTS, "Try to find Object with ID '%s'", *ID); - cUPnPClassObject* Object; - if((Object = this->mObjects->Get((unsigned int)ID))){ - MESSAGE(VERBOSE_OBJECTS, "Found cached object with ID '%s'", *ID); - } - else if((Object = this->mFactory->getObject(ID))){ - //this->cacheObject(Object); - MESSAGE(VERBOSE_OBJECTS, "Found object with ID '%s' in database", *ID); - } - else { - ERROR("No object with such ID '%s'", *ID); - return NULL; - } - return Object; -} - -void cMediaDatabase::cacheObject(cUPnPClassObject* Object){ - if(this->mObjects->Get((unsigned int)Object->getID())==NULL){ - MESSAGE(VERBOSE_OBJECTS ,"Added %s to cache.", *Object->getID()); - this->mObjects->Add(Object, (unsigned int)Object->getID()); - } -} - -int cMediaDatabase::prepareDatabase(){ - if(this->getObjectByID(0)==NULL){ - MESSAGE(VERBOSE_SDK, "Creating database structure"); - cUPnPClassContainer* Root = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _(PLUGIN_SHORT_NAME)); - Root->setID(0); - if(this->mFactory->saveObject(Root)) return -1; - -#ifndef WITHOUT_VIDEO - cUPnPClassContainer* Video = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Video")); - Video->setID(1); - Root->addObject(Video); - cClass VideoClass = { UPNP_CLASS_VIDEO, true }; - Video->addSearchClass(VideoClass); - Video->setSearchable(true); - if(this->mFactory->saveObject(Video)) return -1; -#endif -#ifndef WITHOUT_AUDIO - cUPnPClassContainer* Audio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Audio")); - Audio->setID(2); - Root->addObject(Audio); - cClass AudioClass = { UPNP_CLASS_AUDIO, true }; - Audio->addSearchClass(AudioClass); - Audio->setSearchable(true); - if(this->mFactory->saveObject(Audio)) return -1; -#endif -#ifndef WITHOUT_TV - cUPnPClassContainer* TV = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("TV")); - TV->setID(3); - TV->setContainerType(DLNA_CONTAINER_TUNER); - TV->setSearchable(true); - cClass VideoBCClass = { UPNP_CLASS_VIDEOBC, true }; - TV->addSearchClass(VideoBCClass); - Video->addObject(TV); - if(this->mFactory->saveObject(TV)) return -1; -#endif -#ifndef WITHOUT_RECORDS - cUPnPClassContainer* Records = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Records")); - Records->setID(4); - Video->addObject(Records); - Records->addSearchClass(VideoClass); - Records->setSearchable(true); - if(this->mFactory->saveObject(Records)) return -1; -#endif -#ifndef WITHOUT_RADIO - cUPnPClassContainer* Radio = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("Radio")); - Radio->setID(5); - Audio->addObject(Radio); - cClass AudioBCClass = { UPNP_CLASS_AUDIOBC, true }; - Radio->addSearchClass(AudioBCClass); - Radio->setSearchable(true); - if(this->mFactory->saveObject(Radio)) return -1; -#endif -#ifndef WITHOUT_CUSTOM_VIDEOS - cUPnPClassContainer* CustomVideos = (cUPnPClassContainer*)this->mFactory->createObject(UPNP_CLASS_CONTAINER, _("User videos")); - CustomVideos->setID(6); - Video->addObject(CustomVideos); - CustomVideos->addSearchClass(VideoClass); - CustomVideos->setSearchable(true); - if(this->mFactory->saveObject(CustomVideos)) return -1; -#endif - } - return 0; -} - -#ifndef WITHOUT_TV -int cMediaDatabase::loadChannels(){ - MESSAGE(VERBOSE_LIVE_TV ,"Loading channels"); - cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); - if(TV){ - bool noResource = false; - // TODO: Add to setup - // if an error occured while loading resources, add the channel anyway - bool addWithoutResources = false; - cChannel* Channel = NULL; - for(int Index = 0; (Channel = Channels.Get(Index)); Index = Channels.GetNextNormal(Index)){ - // Iterating the channels -// for(Channel = Channels.First(); Channel; Channel = Channels.(Channel)){ - bool inList = false; - - tChannelID ChannelID = Channel->GetChannelID(); - MESSAGE(VERBOSE_LIVE_TV, "Determine if the channel %s is already listed", *ChannelID.ToString()); - cUPnPClassVideoBroadcast* ChannelItem = NULL; - - ChannelItem = (cUPnPClassVideoBroadcast*)this->getObjectByFastFind(ChannelID.ToString()); - - inList = (ChannelItem && TV->getObject(ChannelItem->getID())) ? true : false; - - if(!inList){ - if(Channel->GroupSep()){ - MESSAGE(VERBOSE_LIVE_TV, "Skipping group '%s'", Channel->Name()); - // Skip channel groups - // Channel groups may be supported theoretically. However, DLNA states that a tuner needs - // a consecutive list of channels. A simple work-around may be a virtual tuner for each group. - } - else if(Channel->Vpid()==0){ - // TODO: add radio support - MESSAGE(VERBOSE_LIVE_TV, "Skipping radio '%s'", Channel->Name()); - } - else { - noResource = false; - MESSAGE(VERBOSE_LIVE_TV, "Adding channel '%s' ID:%s", Channel->Name(), *ChannelID.ToString()); - ChannelItem = (cUPnPClassVideoBroadcast*)this->mFactory->createObject(UPNP_CLASS_VIDEOBC, Channel->Name()); - ChannelItem->setChannelName(Channel->Name()); - ChannelItem->setChannelNr(Channel->Number()); - // Set primary language of the stream - if(Channel->Alang(0)){ - ChannelItem->setLanguage(Channel->Alang(0)); - } - if(cUPnPResources::getInstance()->createFromChannel(ChannelItem, Channel)){ - ERROR("Unable to get resources for this channel"); - noResource = true; - } - if(!noResource || addWithoutResources) { - TV->addObject(ChannelItem); - if(this->mFactory->saveObject(ChannelItem) || - this->addFastFind(ChannelItem, ChannelID.ToString())){ - this->mFactory->deleteObject(ChannelItem); - return -1; - } - MESSAGE(VERBOSE_LIVE_TV, "Successfuly added channel"); - } - else { - // Delete temporarily created object with no resource - this->mFactory->deleteObject(ChannelItem); - } - } - } - else { - MESSAGE(VERBOSE_LIVE_TV, "Skipping %s, already in database", Channel->Name()); - } - } - } - return 0; -} - -void cMediaDatabase::updateChannelEPG(){ - cUPnPClassContainer* TV = (cUPnPClassContainer*)this->getObjectByID(3); - if(TV){ - // Iterating channels - MESSAGE(VERBOSE_EPG_UPDATES, "Getting schedule..."); - cSchedulesLock SchedulesLock; - const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); - - cList* List = TV->getObjectList(); - MESSAGE(VERBOSE_EPG_UPDATES, "TV folder has %d items", List->Count()); - for(cUPnPClassVideoBroadcast* ChannelItem = (cUPnPClassVideoBroadcast*)List->First(); - ChannelItem; - ChannelItem = (cUPnPClassVideoBroadcast*)List->Next(ChannelItem) - ){ - MESSAGE(VERBOSE_EPG_UPDATES, "Find channel by number %d", ChannelItem->getChannelNr()); - cChannel* Channel = Channels.GetByNumber(ChannelItem->getChannelNr()); - - if(!Channel){ - continue; - } - else { - MESSAGE(VERBOSE_EPG_UPDATES, "Found channel with ID %s", *Channel->GetChannelID().ToString()); - - const cSchedule* Schedule = Schedules->GetSchedule(Channel); - const cEvent* Event = Schedule?Schedule->GetPresentEvent():NULL; - if(Event){ - - time_t LastEPGChange = Event->StartTime(); - time_t LastObjectChange = ChannelItem->modified(); - - MESSAGE(VERBOSE_EPG_UPDATES, "Last event start: %s", ctime(&LastEPGChange)); - MESSAGE(VERBOSE_EPG_UPDATES, "Last object modification: %s", ctime(&LastObjectChange)); - if(LastEPGChange >= LastObjectChange){ - MESSAGE(VERBOSE_EPG_UPDATES, "Updating details"); - - if(Event){ - ChannelItem->setTitle(Event->Title()?Event->Title():Channel->Name()); - ChannelItem->setLongDescription(Event->Description()); - ChannelItem->setDescription(Event->ShortText()); - } - else { - ChannelItem->setTitle(Channel->Name()); - ChannelItem->setLongDescription(NULL); - ChannelItem->setDescription(NULL); - } - - this->mFactory->saveObject(ChannelItem); - } - else { - MESSAGE(VERBOSE_EPG_UPDATES, "Channel did not change"); - } - } - else { - MESSAGE(VERBOSE_EPG_UPDATES, "No EPG data"); - ChannelItem->setTitle(Channel->Name()); - ChannelItem->setLongDescription(NULL); - ChannelItem->setDescription(NULL); - } - } - } - } -} -#endif -#ifndef WITHOUT_RECORDS -int cMediaDatabase::loadRecordings(){ - MESSAGE(VERBOSE_RECORDS, "Loading recordings"); - cUPnPClassContainer* Records = (cUPnPClassContainer*)this->getObjectByID(4); - if(Records){ - bool noResource = false; - // TODO: Add to setup - // if an error occured while loading resources, add the channel anyway - bool addWithoutResources = false; - cRecording* Recording = NULL; - for(Recording = Recordings.First(); Recording; Recording = Recordings.Next(Recording)){ - // Iterating the records - bool inList = false; - - MESSAGE(VERBOSE_RECORDS, "Determine if the channel %s is already listed", Recording->FileName()); - - cUPnPClassMovie *MovieItem = NULL; - - MovieItem = (cUPnPClassMovie*)this->getObjectByFastFind(Recording->FileName()); - - inList = (MovieItem && Records->getObject(MovieItem->getID())) ? true : false; - - if(!inList){ - noResource = false; - const cRecordingInfo* RecInfo = Recording->Info(); - - MESSAGE(VERBOSE_RECORDS, "Adding movie '%s' File name:%s", RecInfo->Title(), Recording->FileName()); - - MovieItem = (cUPnPClassMovie*)this->mFactory->createObject(UPNP_CLASS_MOVIE, RecInfo->Title()?RecInfo->Title():Recording->Name()); - MovieItem->setDescription(RecInfo->ShortText()); - MovieItem->setLongDescription(RecInfo->Description()); - MovieItem->setStorageMedium(UPNP_STORAGE_HDD); - - if(RecInfo->Components()){ - // The first component - tComponent *Component = RecInfo->Components()->Component(0); - if(Component) MovieItem->setLanguage(Component->language); - } - - if(cUPnPResources::getInstance()->createFromRecording(MovieItem, Recording)){ - ERROR("Unable to get resources for this channel"); - noResource = true; - } - if(!noResource || addWithoutResources) { - Records->addObject(MovieItem); - if(this->mFactory->saveObject(MovieItem) || - this->addFastFind(MovieItem, Recording->FileName())){ - this->mFactory->deleteObject(MovieItem); - return -1; - } - MESSAGE(VERBOSE_RECORDS, "Successfuly added movie"); - } - else { - // Delete temporarily created object with no resource - this->mFactory->deleteObject(MovieItem); - } - } - else { - MESSAGE(VERBOSE_RECORDS, "Skipping %s, already in Database", Recording->FileName()); - } - } - } - return 0; -} -#endif - -void cMediaDatabase::Action(){ - time_t LastEPGUpdate = 0; - while(this->Running()){ - -#ifndef WITHOUT_TV - if(cSchedules::Modified() >= LastEPGUpdate){ - MESSAGE(VERBOSE_EPG_UPDATES, "Schedule changed. Updating..."); - updateChannelEPG(); - LastEPGUpdate = cSchedules::Modified(); - } -#endif -#ifndef WITHOUT_RECORDS - int NotUsed; - if(Recordings.StateChanged(NotUsed)){ - MESSAGE(VERBOSE_EPG_UPDATES, "Recordings changed. Updating..."); - loadRecordings(); - } -#endif - - cCondWait::SleepMs(60 * 1000); // sleep a minute - } -} - -int cMediaDatabase::browse( - OUT cUPnPResultSet** Results, - IN const char* ID, - IN bool BrowseMetadata, - IN const char* Filter, - IN unsigned int Offset, - IN unsigned int Count, - IN const char* SortCriteria -){ - *Results = new cUPnPResultSet; - (*Results)->mNumberReturned = 0; - (*Results)->mTotalMatches = 0; - (*Results)->mResult = NULL; - - MESSAGE(VERBOSE_DIDL, "===== Browsing ====="); - MESSAGE(VERBOSE_DIDL, "ID: %s", ID); - MESSAGE(VERBOSE_DIDL, "Browse %s", BrowseMetadata?"metadata":"children"); - MESSAGE(VERBOSE_DIDL, "Filter: %s", Filter); - MESSAGE(VERBOSE_DIDL, "Offset: %d", Offset); - MESSAGE(VERBOSE_DIDL, "Count: %d", Count); - MESSAGE(VERBOSE_DIDL, "Sort: %s", SortCriteria); - - cUPnPObjectID ObjectID = atoi(ID); - - cStringList* FilterList = cFilterCriteria::parse(Filter); - cList* SortCriterias = cSortCriteria::parse(SortCriteria); - - if(!SortCriterias){ - return UPNP_CDS_E_INVALID_SORT_CRITERIA; - } - - cUPnPClassObject* Object = this->getObjectByID(ObjectID); - if(Object){ - IXML_Document* DIDLDoc = NULL; - if(ixmlParseBufferEx(UPNP_DIDL_SKELETON, &DIDLDoc)==IXML_SUCCESS){ - - IXML_Node* Root = ixmlNode_getFirstChild((IXML_Node*) DIDLDoc); - switch(BrowseMetadata){ - case true: - ixmlNode_appendChild(Root, Object->createDIDLFragment(DIDLDoc, FilterList)); - delete FilterList; - (*Results)->mNumberReturned = 1; - (*Results)->mTotalMatches = 1; - (*Results)->mResult = ixmlDocumenttoString(DIDLDoc); - ixmlDocument_free(DIDLDoc); - return UPNP_E_SUCCESS; - case false: - if(Object->isContainer()){ - cUPnPClassContainer* Container = Object->getContainer(); - (*Results)->mTotalMatches = Container->getChildCount(); - cUPnPObjects* Children = Container->getObjectList(); - - if(SortCriterias){ - for(cSortCrit* SortBy = SortCriterias->First(); SortBy ; SortBy = SortCriterias->Next(SortBy)){ - MESSAGE(VERBOSE_DIDL, "Sorting by %s %s", SortBy->Property, SortBy->SortDescending?"ascending":"descending"); - Children->SortBy(SortBy->Property, SortBy->SortDescending); - } - } - - cUPnPClassObject* Child = Children->First(); - if(Count==0 || Count > Container->getChildCount()) - Count = Container->getChildCount(); - - MESSAGE(VERBOSE_DIDL, "Number of children: %d", Count); - while(Offset-- && (Child = Children->Next(Child))){} - for(; Count && Child ; Child = Children->Next(Child), Count--){ - MESSAGE(VERBOSE_DIDL, "Appending %s to didl", Child->getTitle()); - ixmlNode_appendChild(Root, Child->createDIDLFragment(DIDLDoc, FilterList)); - (*Results)->mNumberReturned++; - } - delete FilterList; - delete SortCriterias; - } - else { - (*Results)->mNumberReturned = 0; - (*Results)->mTotalMatches = 0; - } - (*Results)->mResult = ixmlDocumenttoString(DIDLDoc); - ixmlDocument_free(DIDLDoc); - return UPNP_E_SUCCESS; - } - } - else { - ERROR("Unable to parse DIDL skeleton"); - return UPNP_CDS_E_CANT_PROCESS_REQUEST; - } - } - else { - ERROR("No such object: %s", ID); - return UPNP_CDS_E_NO_SUCH_OBJECT; // No such object; - } - return UPNP_SOAP_E_ACTION_FAILED; -} \ No newline at end of file diff --git a/database/object.cpp b/database/object.cpp deleted file mode 100644 index b193567..0000000 --- a/database/object.cpp +++ /dev/null @@ -1,1887 +0,0 @@ -/* - * File: object.cpp - * Author: savop - * - * Created on 11. September 2009, 20:39 - */ - -#include -#include -#include -#include -#include -#include "database.h" -#include -#include -#include "metadata.h" -#include "object.h" -#include "../common.h" -#include "resources.h" - -static int CompareUPnPObjects(const void *a, const void *b){ - const cUPnPClassObject *la = *(const cUPnPClassObject **)a; - const cUPnPClassObject *lb = *(const cUPnPClassObject **)b; - return la->Compare(*lb); -} - -cUPnPObjects::cUPnPObjects(){} - -cUPnPObjects::~cUPnPObjects(){} - -void cUPnPObjects::SortBy(const char* Property, bool Descending){ - int n = Count(); - cUPnPClassObject *a[n]; - cUPnPClassObject *object = (cUPnPClassObject *)objects; - int i = 0; - while (object && i < n) { - object->setSortCriteria(Property, Descending); - a[i++] = object; - object = (cUPnPClassObject *)object->Next(); - } - qsort(a, n, sizeof(cUPnPClassObject *), CompareUPnPObjects); - objects = lastObject = NULL; - for (i = 0; i < n; i++) { - a[i]->Unlink(); - count--; - Add(a[i]); - } -} - - /**********************************************\ - * * - * UPnP Objects * - * * - \**********************************************/ - - /**********************************************\ - * * - * Object * - * * - \**********************************************/ - -cUPnPClassObject::cUPnPClassObject(){ - this->mID = -1; - this->mLastID = -1; - this->mResources = new cList; - this->mResourcesID = new cHash; - this->mParent = NULL; - this->mClass = NULL; - this->mCreator = NULL; - this->mTitle = NULL; - this->mWriteStatus = WS_UNKNOWN; - this->mRestricted = true; - this->mDIDLFragment = NULL; - this->mSortCriteria = NULL; - this->mLastModified = NULL; -} - -cUPnPClassObject::~cUPnPClassObject(){ - if(this->mParent) this->mParent->getContainer()->removeObject(this); - this->mResources->Clear(); - this->mResourcesID->Clear(); - delete this->mResources; - delete this->mResourcesID; - free(this->mDIDLFragment); -} - -int cUPnPClassObject::Compare(const cListObject& ListObject) const { - char* Value1 = NULL; char* Value2 = NULL; int ret = 0; - cUPnPClassObject* Object = (cUPnPClassObject*)&ListObject; - if(Object->getProperty(this->mSortCriteria, &Value1) && - this->getProperty(this->mSortCriteria, &Value2)){ - ret = strcmp(Value1, Value2); - if(this->mSortDescending) ret *= -1; - } - return ret; -} - -void cUPnPClassObject::setSortCriteria(const char* Property, bool Descending){ - this->mSortCriteria = Property; - this->mSortDescending = Descending; -} - -void cUPnPClassObject::clearSortCriteria(){ - this->mSortCriteria = NULL; - this->mSortDescending = false; -} - -int cUPnPClassObject::setID(cUPnPObjectID ID){ - MESSAGE(VERBOSE_MODIFICATIONS, "Set ID from %s to %s", *this->getID(),*ID); - if((int)ID < 0){ - ERROR("Invalid object ID '%s'",*ID); - return -1; - } - this->mLastID = (this->mID==-1) ? ID : this->mID; - this->mID = ID; - return 0; -} - -int cUPnPClassObject::setParent(cUPnPClassContainer* Parent){ - if(Parent==NULL){ - MESSAGE(VERBOSE_MODIFICATIONS, "Object '%s' elected as root object", *this->getID()); - } - // unregister from old parent - if(this->mParent && Parent != this->mParent){ - this->mParent->getContainer()->removeObject(this); - } - this->mParent = Parent; - return 0; -} - -int cUPnPClassObject::setClass(const char* Class){ - if( !strcasecmp(Class, UPNP_CLASS_ALBUM) || - !strcasecmp(Class, UPNP_CLASS_AUDIO) || - !strcasecmp(Class, UPNP_CLASS_AUDIOBC) || - !strcasecmp(Class, UPNP_CLASS_AUDIOBOOK) || - !strcasecmp(Class, UPNP_CLASS_CONTAINER) || - !strcasecmp(Class, UPNP_CLASS_GENRE) || - !strcasecmp(Class, UPNP_CLASS_IMAGE) || - !strcasecmp(Class, UPNP_CLASS_ITEM) || - !strcasecmp(Class, UPNP_CLASS_MOVIE) || - !strcasecmp(Class, UPNP_CLASS_MOVIEGENRE) || - !strcasecmp(Class, UPNP_CLASS_MUSICALBUM) || - !strcasecmp(Class, UPNP_CLASS_MUSICARTIST) || - !strcasecmp(Class, UPNP_CLASS_MUSICGENRE) || - !strcasecmp(Class, UPNP_CLASS_MUSICTRACK) || - !strcasecmp(Class, UPNP_CLASS_MUSICVIDCLIP) || - !strcasecmp(Class, UPNP_CLASS_OBJECT) || - !strcasecmp(Class, UPNP_CLASS_PERSON) || - !strcasecmp(Class, UPNP_CLASS_PHOTO) || - !strcasecmp(Class, UPNP_CLASS_PHOTOALBUM) || - !strcasecmp(Class, UPNP_CLASS_PLAYLIST) || - !strcasecmp(Class, UPNP_CLASS_PLAYLISTCONT) || - !strcasecmp(Class, UPNP_CLASS_STORAGEFOLD) || - !strcasecmp(Class, UPNP_CLASS_STORAGESYS) || - !strcasecmp(Class, UPNP_CLASS_STORAGEVOL) || - !strcasecmp(Class, UPNP_CLASS_TEXT) || - !strcasecmp(Class, UPNP_CLASS_VIDEO) || - !strcasecmp(Class, UPNP_CLASS_VIDEOBC) - ){ - this->mClass = strdup0(Class); - return 0; - } - else { - ERROR("Invalid or unsupported class '%s'", Class); - return -1; - } -} - -int cUPnPClassObject::setTitle(const char* Title){ - if(Title==NULL){ - ERROR("Title is empty but required"); - return -1; - } - this->mTitle = strdup0(Title); - return 0; -} - -int cUPnPClassObject::setCreator(const char* Creator){ - this->mCreator = strdup0(Creator); - return 0; -} - -int cUPnPClassObject::setRestricted(bool Restricted){ - this->mRestricted = Restricted; - return 0; -} - -int cUPnPClassObject::setWriteStatus(int WriteStatus){ - if( WriteStatus == WS_MIXED || - WriteStatus == WS_NOT_WRITABLE || - WriteStatus == WS_PROTECTED || - WriteStatus == WS_UNKNOWN || - WriteStatus == WS_WRITABLE){ - this->mWriteStatus = WriteStatus; - return 0; - } - else { - ERROR("Invalid write status '%d'", WriteStatus); - return -1; - } -} - -bool cUPnPClassObject::getProperty(const char* Property, char** Value) const { - cString Val; - if(!strcasecmp(Property, SQLITE_COL_OBJECTID) || !strcasecmp(Property, UPNP_PROP_OBJECTID)){ - Val = *this->getID(); - } - else if(!strcasecmp(Property, SQLITE_COL_PARENTID) || !strcasecmp(Property, UPNP_PROP_PARENTID)){ - Val = *this->getParentID(); - } - else if(!strcasecmp(Property, SQLITE_COL_CLASS) || !strcasecmp(Property, UPNP_PROP_CLASS)){ - Val = this->getClass(); - } - else if(!strcasecmp(Property, SQLITE_COL_TITLE) || !strcasecmp(Property, UPNP_PROP_TITLE)){ - Val = this->getTitle(); - } - else if(!strcasecmp(Property, SQLITE_COL_CREATOR) || !strcasecmp(Property, UPNP_PROP_CREATOR)){ - Val = this->getCreator(); - } - else if(!strcasecmp(Property, SQLITE_COL_RESTRICTED) || !strcasecmp(Property, UPNP_PROP_RESTRICTED)){ - Val = this->isRestricted()?"1":"0"; - } - else if(!strcasecmp(Property, SQLITE_COL_WRITESTATUS) || !strcasecmp(Property, UPNP_PROP_WRITESTATUS)){ - Val = itoa(this->getWriteStatus()); - } - else { - ERROR("Invalid property '%s'", Property); - return false; - } - *Value = strdup0(*Val); - return true; -} - -cStringList* cUPnPClassObject::getPropertyList(){ - cStringList* Properties = new cStringList; - Properties->Append(strdup(UPNP_PROP_CREATOR)); - Properties->Append(strdup(UPNP_PROP_WRITESTATUS)); - return Properties; -} - -bool cUPnPClassObject::setProperty(const char* Property, const char* Value){ - int ret; - if(!strcasecmp(Property, SQLITE_COL_OBJECTID) || !strcasecmp(Property, UPNP_PROP_OBJECTID)){ - ERROR("Not allowed to set object ID by hand"); - return false; - } - else if(!strcasecmp(Property, SQLITE_COL_PARENTID) || !strcasecmp(Property, UPNP_PROP_PARENTID)){ - ERROR("Not allowed to set parent ID by hand"); - return false; - } - else if(!strcasecmp(Property, SQLITE_COL_CLASS) || !strcasecmp(Property, UPNP_PROP_CLASS)){ - ERROR("Not allowed to set class by hand"); - return false; - } - else if(!strcasecmp(Property, SQLITE_COL_TITLE) || !strcasecmp(Property, UPNP_PROP_TITLE)){ - ret = this->setTitle(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_CREATOR) || !strcasecmp(Property, UPNP_PROP_CREATOR)){ - ret = this->setCreator(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_RESTRICTED) || !strcasecmp(Property, UPNP_PROP_RESTRICTED)){ - ret = this->setRestricted(atoi(Value)==1?true:false); - } - else if(!strcasecmp(Property, SQLITE_COL_WRITESTATUS) || !strcasecmp(Property, UPNP_PROP_WRITESTATUS)){ - ret= this->setWriteStatus(atoi(Value)); - } - else { - ERROR("Invalid property '%s'", Property); - return false; - } - return ret<0?false:true; -} - -int cUPnPClassObject::addResource(cUPnPResource* Resource){ - MESSAGE(VERBOSE_MODIFICATIONS, "Adding resource #%d", Resource->getID()); - if(!Resource){ - ERROR("No resource"); - return -1; - } - this->mResources->Add(Resource); - this->mResourcesID->Add(Resource, Resource->getID()); - return 0; -} - -int cUPnPClassObject::removeResource(cUPnPResource* Resource){ - if(!Resource){ - ERROR("No resource"); - return -1; - } - this->mResourcesID->Del(Resource, Resource->getID()); - this->mResources->Del(Resource); - return 0; -} - - /**********************************************\ - * * - * Item * - * * - \**********************************************/ - -cUPnPClassItem::cUPnPClassItem(){ - this->setClass(UPNP_CLASS_ITEM); - this->mReference = NULL; -} - -int cUPnPClassItem::setReference(cUPnPClassItem* Reference){ - this->mReference = Reference; - return 0; -} - -cStringList* cUPnPClassItem::getPropertyList(){ - cStringList* Properties = cUPnPClassObject::getPropertyList(); - Properties->Append(strdup(UPNP_PROP_REFERENCEID)); - return Properties; -} - -bool cUPnPClassItem::getProperty(const char* Property, char** Value) const { - - if(!strcasecmp(Property, SQLITE_COL_REFERENCEID) || !strcasecmp(Property, UPNP_PROP_REFERENCEID)){ - *Value = strdup0(*this->getReferenceID()); - } - else return cUPnPClassObject::getProperty(Property, Value); - return true; -} - -bool cUPnPClassItem::setProperty(const char* Property, const char* Value){ - return cUPnPClassObject::setProperty(Property, Value); -} - -IXML_Node* cUPnPClassItem::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ - this->mDIDLFragment = Document; - - MESSAGE(VERBOSE_DIDL, "==(%s)= %s =====", *this->getID(), this->getTitle()); - MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); - MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); - MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); - MESSAGE(VERBOSE_DIDL, "Filter: %d", Filter?Filter->Size():-1); - - IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); - - IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "item"); - ixmlNode_appendChild(Didl, (IXML_Node*) eItem); - - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_OBJECTID, *this->getID()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_PARENTID, *this->getParentID()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_RESTRICTED, this->isRestricted()?"1":"0"); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_TITLE, this->getTitle()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CLASS, this->getClass()); - - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CREATOR, this->getCreator()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_WRITESTATUS, itoa(this->getWriteStatus())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_REFERENCEID, ((int)(this->getReferenceID())<0)?"":*this->getReferenceID()); - - for(cUPnPResource* Resource = this->getResources()->First(); Resource; Resource = this->getResources()->Next(Resource)){ - MESSAGE(VERBOSE_DIDL, "Resource: %s", Resource->getResource()); - MESSAGE(VERBOSE_DIDL, "Protocolinfo: %s", Resource->getProtocolInfo()); - - cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); - cString ResourceURL = cString::sprintf("%s%s/get?resId=%d", *URLBase, UPNP_DIR_SHARES, Resource->getID()); - - MESSAGE(VERBOSE_DIDL, "Resource-URI: %s", *ResourceURL); - - IXML_Element* eRes = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RESOURCE, *ResourceURL); - if(eRes){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_BITRATE, itoa(Resource->getBitrate())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_BITSPERSAMPLE, itoa(Resource->getBitsPerSample())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_COLORDEPTH, itoa(Resource->getColorDepth())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_DURATION, Resource->getDuration()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_PROTOCOLINFO, Resource->getProtocolInfo()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eRes, UPNP_PROP_SIZE, cString::sprintf("%lld", Resource->getFileSize())); - } - - } - - return (IXML_Node*)eItem; -} - - /**********************************************\ - * * - * Container * - * * - \**********************************************/ - -cUPnPClassContainer::cUPnPClassContainer(){ - this->setClass(UPNP_CLASS_CONTAINER); - this->mChildren = new cUPnPObjects; - this->mChildrenID = new cHash; - this->mContainerType = NULL; - this->mUpdateID = 0; - this->mSearchable = false; -} - -cUPnPClassContainer::~cUPnPClassContainer(){ - delete this->mChildren; - delete this->mChildrenID; -} - -IXML_Node* cUPnPClassContainer::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ - this->mDIDLFragment = Document; - - MESSAGE(VERBOSE_DIDL, "===(%s)= %s =====", *this->getID(), this->getTitle()); - MESSAGE(VERBOSE_DIDL, "ParentID: %s", *this->getParentID()); - MESSAGE(VERBOSE_DIDL, "Restricted: %s", this->isRestricted()?"1":"0"); - MESSAGE(VERBOSE_DIDL, "Class: %s", this->getClass()); - MESSAGE(VERBOSE_DIDL, "Filter: %d", Filter?Filter->Size():-1); - - IXML_Node* Didl = ixmlNode_getFirstChild((IXML_Node*) this->mDIDLFragment); - IXML_Element* eItem = ixmlDocument_createElement(this->mDIDLFragment, "container"); - ixmlNode_appendChild(Didl, (IXML_Node*) eItem); - - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_OBJECTID, *this->getID()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_PARENTID, *this->getParentID()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_RESTRICTED, this->isRestricted()?"1":"0"); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_TITLE, this->getTitle()); - ixmlAddProperty(this->mDIDLFragment, eItem, UPNP_PROP_CLASS, this->getClass()); - - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DLNA_CONTAINERTYPE, this->getContainerType()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHILDCOUNT, itoa(this->getChildCount())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SEARCHABLE, this->isSearchable()?"1":"0"); - - const tClassVector* CreateClasses = this->getCreateClasses(); - for(unsigned int i = 0; i < CreateClasses->size(); i++){ - cClass CreateClass = CreateClasses->at(i); - IXML_Element* eCreateClasses = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CREATECLASS, CreateClass.ID); - if(eCreateClasses) - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CCLASSDERIVED, CreateClass.includeDerived?"1":"0"); - } - - const tClassVector* SearchClasses = this->getSearchClasses(); - for(unsigned int i = 0; i < SearchClasses->size(); i++){ - cClass SearchClass = SearchClasses->at(i); - IXML_Element* eSearchClasses = ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SEARCHCLASS, SearchClass.ID); - if(eSearchClasses) - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_SCLASSDERIVED, SearchClass.includeDerived?"1":"0"); - } - - return (IXML_Node*)eItem; -} - -int cUPnPClassContainer::setUpdateID(unsigned int UID){ - this->mUpdateID = UID; - return 0; -} - -cStringList* cUPnPClassContainer::getPropertyList(){ - cStringList* Properties = cUPnPClassObject::getPropertyList(); - Properties->Append(strdup(UPNP_PROP_DLNA_CONTAINERTYPE)); - Properties->Append(strdup(UPNP_PROP_SEARCHABLE)); - return Properties; -} - -bool cUPnPClassContainer::setProperty(const char* Property, const char* Value){ - int ret; - if(!strcasecmp(Property, SQLITE_COL_DLNA_CONTAINERTYPE) || !strcasecmp(Property, UPNP_PROP_DLNA_CONTAINERTYPE)){ - ret = this->setContainerType(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_SEARCHABLE) || !strcasecmp(Property, UPNP_PROP_SEARCHABLE)){ - ret = this->setSearchable(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_CONTAINER_UID)){ - ret = this->setUpdateID((unsigned int)atoi(Value)); - } - else return cUPnPClassObject::setProperty(Property, Value); - return ret<0?false:true; -} - -bool cUPnPClassContainer::getProperty(const char* Property, char** Value) const { - cString Val; - if(!strcasecmp(Property, SQLITE_COL_DLNA_CONTAINERTYPE) || !strcasecmp(Property, UPNP_PROP_DLNA_CONTAINERTYPE)){ - Val = this->getContainerType(); - } - else if(!strcasecmp(Property, SQLITE_COL_SEARCHABLE) || !strcasecmp(Property, UPNP_PROP_SEARCHABLE)){ - Val = this->isSearchable()?"1":"0"; - } - else if(!strcasecmp(Property, SQLITE_COL_CONTAINER_UID)){ - Val = cString::sprintf("%d", this->getUpdateID()); - } - else return cUPnPClassObject::getProperty(Property, Value); - *Value = strdup0(*Val); - return true; -} - -void cUPnPClassContainer::addObject(cUPnPClassObject* Object){ - MESSAGE(VERBOSE_MODIFICATIONS, "Adding object (ID:%s) to container (ID:%s)", *Object->getID(), *this->getID()); - Object->setParent(this); - this->mChildren->Add(Object); - this->mChildrenID->Add(Object, (unsigned int)Object->getID()); -} - -void cUPnPClassContainer::removeObject(cUPnPClassObject* Object){ - this->mChildrenID->Del(Object, (unsigned int)Object->getID()); - this->mChildren->Del(Object, false); - Object->mParent = NULL; - MESSAGE(VERBOSE_MODIFICATIONS, "Removed object (ID:%s) from container (ID:%s)", *Object->getID(), *this->getID()); -} - -cUPnPClassObject* cUPnPClassContainer::getObject(cUPnPObjectID ID) const { - MESSAGE(VERBOSE_METADATA, "Getting object (ID:%s)", *ID); - if((int)ID < 0){ - ERROR("Invalid object ID"); - return NULL; - } - return this->mChildrenID->Get((unsigned int)ID); -} - -int cUPnPClassContainer::setContainerType(const char* Type){ - if(Type==NULL){ - this->mContainerType = Type; - } - else if(!strcasecmp(Type, DLNA_CONTAINER_TUNER)){ - this->mContainerType = Type; - } - else { - ERROR("Invalid container type '%s'",Type); - return -1; - } - return 0; -} - -int cUPnPClassContainer::addSearchClass(cClass SearchClass){ - this->mSearchClasses.push_back(SearchClass); - return 0; -} - -int cUPnPClassContainer::delSearchClass(cClass SearchClass){ - tClassVector::iterator it = this->mSearchClasses.begin(); - cClass Class; - for(unsigned int i=0; imSearchClasses.size(); i++){ - Class = this->mSearchClasses[i]; - if(Class == SearchClass){ - this->mSearchClasses.erase(it+i); - return 0; - } - } - return -1; -} - -int cUPnPClassContainer::addCreateClass(cClass CreateClass){ - this->mCreateClasses.push_back(CreateClass); - return 0; -} - -int cUPnPClassContainer::delCreateClass(cClass CreateClass){ - tClassVector::iterator it = this->mCreateClasses.begin(); - cClass Class; - for(unsigned int i=0; imCreateClasses.size(); i++){ - Class = this->mCreateClasses[i]; - if(Class == CreateClass){ - this->mCreateClasses.erase(it+i); - return 0; - } - } - return -1; -} - -int cUPnPClassContainer::setSearchClasses(std::vector SearchClasses){ - this->mSearchClasses = SearchClasses; - return 0; -} - -int cUPnPClassContainer::setCreateClasses(std::vector CreateClasses){ - this->mCreateClasses = CreateClasses; - return 0; -} - -int cUPnPClassContainer::setSearchable(bool Searchable){ - this->mSearchable = Searchable; - return 0; -} - -bool cUPnPClassContainer::isUpdated(){ - static unsigned int lastUpdateID = this->getUpdateID(); - if(lastUpdateID != this->getUpdateID()){ - lastUpdateID = this->getUpdateID(); - return true; - } - else return false; -} - - /**********************************************\ - * * - * Video item * - * * - \**********************************************/ - -cUPnPClassVideoItem::cUPnPClassVideoItem(){ - this->setClass(UPNP_CLASS_VIDEO); - this->mGenre = NULL; - this->mLongDescription = NULL; - this->mProducers = NULL; - this->mRating = NULL; - this->mActors = NULL; - this->mDirectors = NULL; - this->mDescription = NULL; - this->mPublishers = NULL; - this->mLanguage = NULL; - this->mRelations = NULL; -} - -cUPnPClassVideoItem::~cUPnPClassVideoItem(){ -} - -IXML_Node* cUPnPClassVideoItem::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ - IXML_Element* eItem = (IXML_Element*) cUPnPClassItem::createDIDLFragment(Document, Filter); - - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_LONGDESCRIPTION, this->getLongDescription()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DESCRIPTION, this->getDescription()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_LANGUAGE, this->getLanguage()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RATING, this->getRating()); - - char* genre = strtok(strdup0(this->getGenre()), ","); - while(genre){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_GENRE, genre); - genre = strtok(NULL, ","); - } - - char* producer = strtok(strdup0(this->getProducers()), ","); - while(producer){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_PRODUCER, producer); - producer = strtok(NULL, ","); - } - - char* actor = strtok(strdup0(this->getActors()), ","); - while(actor){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_ACTOR, actor); - actor = strtok(NULL, ","); - } - - char* director = strtok(strdup0(this->getDirectors()), ","); - while(director){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_DIRECTOR, director); - director = strtok(NULL, ","); - } - - char* publisher = strtok(strdup0(this->getPublishers()), ","); - while(publisher){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_PUBLISHER, publisher); - publisher = strtok(NULL, ","); - } - - char* relation = strtok(strdup0(this->getRelations()), ","); - while(relation){ - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_RELATION, relation); - relation = strtok(NULL, ","); - } - - return (IXML_Node*) eItem; -} - -cStringList* cUPnPClassVideoItem::getPropertyList(){ - cStringList* Properties = cUPnPClassItem::getPropertyList(); - Properties->Append(strdup(UPNP_PROP_LONGDESCRIPTION)); - Properties->Append(strdup(UPNP_PROP_PRODUCER)); - Properties->Append(strdup(UPNP_PROP_GENRE)); - Properties->Append(strdup(UPNP_PROP_RATING)); - Properties->Append(strdup(UPNP_PROP_ACTOR)); - Properties->Append(strdup(UPNP_PROP_DIRECTOR)); - Properties->Append(strdup(UPNP_PROP_DESCRIPTION)); - Properties->Append(strdup(UPNP_PROP_PUBLISHER)); - Properties->Append(strdup(UPNP_PROP_LANGUAGE)); - Properties->Append(strdup(UPNP_PROP_RELATION)); - return Properties; -} - -bool cUPnPClassVideoItem::getProperty(const char* Property, char** Value) const { - cString Val; - if(!strcasecmp(Property,SQLITE_COL_GENRE) || !strcasecmp(Property,UPNP_PROP_GENRE)){ - Val = this->getGenre(); - } - else if(!strcasecmp(Property,SQLITE_COL_LONGDESCRIPTION) || !strcasecmp(Property,UPNP_PROP_LONGDESCRIPTION)){ - Val = this->getLongDescription(); - } - else if(!strcasecmp(Property,SQLITE_COL_PRODUCER) || !strcasecmp(Property,UPNP_PROP_PRODUCER)){ - Val = this->getProducers(); - } - else if(!strcasecmp(Property,SQLITE_COL_RATING) || !strcasecmp(Property,UPNP_PROP_RATING)){ - Val = this->getRating(); - } - else if(!strcasecmp(Property,SQLITE_COL_ACTOR) || !strcasecmp(Property,UPNP_PROP_ACTOR)){ - Val = this->getActors(); - } - else if(!strcasecmp(Property,SQLITE_COL_DIRECTOR) || !strcasecmp(Property,UPNP_PROP_DIRECTOR)){ - Val = this->getDirectors(); - } - else if(!strcasecmp(Property,SQLITE_COL_DESCRIPTION) || !strcasecmp(Property,UPNP_PROP_DESCRIPTION)){ - Val = this->getDescription(); - } - else if(!strcasecmp(Property,SQLITE_COL_PUBLISHER) || !strcasecmp(Property,UPNP_PROP_PUBLISHER)){ - Val = this->getPublishers(); - } - else if(!strcasecmp(Property,SQLITE_COL_LANGUAGE) || !strcasecmp(Property,UPNP_PROP_LANGUAGE)){ - Val = this->getLanguage(); - } - else if(!strcasecmp(Property,SQLITE_COL_RELATION) || !strcasecmp(Property,UPNP_PROP_RELATION)){ - Val = this->getRelations(); - } - else return cUPnPClassItem::getProperty(Property, Value); - *Value = strdup0(*Val); - return true; -} - -bool cUPnPClassVideoItem::setProperty(const char* Property, const char* Value){ - bool ret; - if(!strcasecmp(Property,SQLITE_COL_GENRE) || !strcasecmp(Property,UPNP_PROP_GENRE)){ - ret = this->setGenre(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_LONGDESCRIPTION) || !strcasecmp(Property,UPNP_PROP_LONGDESCRIPTION)){ - ret = this->setLongDescription(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_PRODUCER) || !strcasecmp(Property,UPNP_PROP_PRODUCER)){ - ret = this->setProducers(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_RATING) || !strcasecmp(Property,UPNP_PROP_RATING)){ - ret = this->setRating(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_ACTOR) || !strcasecmp(Property,UPNP_PROP_ACTOR)){ - ret = this->setActors(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_DIRECTOR) || !strcasecmp(Property,UPNP_PROP_DIRECTOR)){ - ret = this->setDirectors(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_DESCRIPTION) || !strcasecmp(Property,UPNP_PROP_DESCRIPTION)){ - ret = this->setDescription(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_PUBLISHER) || !strcasecmp(Property,UPNP_PROP_PUBLISHER)){ - ret = this->setPublishers(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_LANGUAGE) || !strcasecmp(Property,UPNP_PROP_LANGUAGE)){ - ret = this->setLanguage(Value); - } - else if(!strcasecmp(Property,SQLITE_COL_RELATION) || !strcasecmp(Property,UPNP_PROP_RELATION)){ - ret = this->setRelations(Value); - } - else return cUPnPClassItem::setProperty(Property, Value); - return ret<0?false:true; -} - -int cUPnPClassVideoItem::setActors(const char* Actors){ - this->mActors = Actors; - return 0; -} - -int cUPnPClassVideoItem::setGenre(const char* Genre){ - this->mGenre = Genre; - return 0; -} - -int cUPnPClassVideoItem::setDescription(const char* Description){ - this->mDescription = Description; - return 0; -} - -int cUPnPClassVideoItem::setLongDescription(const char* LongDescription){ - this->mLongDescription = LongDescription; - return 0; -} - -int cUPnPClassVideoItem::setProducers(const char* Producers){ - this->mProducers = Producers; - return 0; -} - -int cUPnPClassVideoItem::setRating(const char* Rating){ - this->mRating = Rating; - return 0; -} - -int cUPnPClassVideoItem::setDirectors(const char* Directors){ - this->mDirectors = Directors; - return 0; -} - -int cUPnPClassVideoItem::setPublishers(const char* Publishers){ - this->mPublishers = Publishers; - return 0; -} - -int cUPnPClassVideoItem::setLanguage(const char* Language){ - this->mLanguage = Language; - return 0; -} - -int cUPnPClassVideoItem::setRelations(const char* Relations){ - this->mRelations = Relations; - return 0; -} - - /**********************************************\ - * * - * Video Broadcast item * - * * - \**********************************************/ - -cUPnPClassVideoBroadcast::cUPnPClassVideoBroadcast(){ - this->setClass(UPNP_CLASS_VIDEOBC); - this->mIcon = NULL; - this->mRegion = NULL; - this->mChannelNr = 0; -} - -cUPnPClassVideoBroadcast::~cUPnPClassVideoBroadcast(){ -} - -IXML_Node* cUPnPClassVideoBroadcast::createDIDLFragment(IXML_Document* Document, cStringList* Filter){ - IXML_Element* eItem = (IXML_Element*) cUPnPClassItem::createDIDLFragment(Document, Filter); - - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHANNELNAME, this->getChannelName()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_CHANNELNR, itoa(this->getChannelNr())); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_ICON, this->getIcon()); - ixmlAddFilteredProperty(Filter, this->mDIDLFragment, eItem, UPNP_PROP_REGION, this->getRegion()); - - return (IXML_Node*) eItem; -} - -cStringList* cUPnPClassVideoBroadcast::getPropertyList(){ - cStringList* Properties = cUPnPClassVideoItem::getPropertyList(); - Properties->Append(strdup(UPNP_PROP_CHANNELNAME)); - Properties->Append(strdup(UPNP_PROP_CHANNELNR)); - Properties->Append(strdup(UPNP_PROP_ICON)); - Properties->Append(strdup(UPNP_PROP_REGION)); - return Properties; -} - -bool cUPnPClassVideoBroadcast::setProperty(const char* Property, const char* Value){ - bool ret; - if(!strcasecmp(Property, SQLITE_COL_CHANNELNAME) || !strcasecmp(Property, UPNP_PROP_CHANNELNAME)){ - ret = this->setChannelName(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_CHANNELNR) || !strcasecmp(Property, UPNP_PROP_CHANNELNR)){ - ret = this->setChannelNr(atoi(Value)); - } - else if(!strcasecmp(Property, SQLITE_COL_ICON) || !strcasecmp(Property, UPNP_PROP_ICON)){ - ret = this->setIcon(Value); - } - else if(!strcasecmp(Property, SQLITE_COL_REGION) || !strcasecmp(Property, UPNP_PROP_REGION)){ - ret = this->setRegion(Value); - } - else return cUPnPClassVideoItem::setProperty(Property, Value); - return ret<0?false:true; -} - -bool cUPnPClassVideoBroadcast::getProperty(const char* Property, char** Value) const { - cString Val; - if(!strcasecmp(Property, SQLITE_COL_CHANNELNAME) || !strcasecmp(Property, UPNP_PROP_CHANNELNAME)){ - Val = this->getChannelName(); - } - else if(!strcasecmp(Property, SQLITE_COL_CHANNELNR) || !strcasecmp(Property, UPNP_PROP_CHANNELNR)){ - Val = itoa(this->getChannelNr()); - } - else if(!strcasecmp(Property, SQLITE_COL_ICON) || !strcasecmp(Property, UPNP_PROP_ICON)){ - Val = this->getIcon(); - } - else if(!strcasecmp(Property, SQLITE_COL_REGION) || !strcasecmp(Property, UPNP_PROP_REGION)){ - Val = this->getRegion(); - } - else return cUPnPClassVideoItem::getProperty(Property, Value); - *Value = strdup0(*Val); - return true; -} - -int cUPnPClassVideoBroadcast::setChannelName(const char* ChannelName){ - this->mChannelName = ChannelName; - return 0; -} - -int cUPnPClassVideoBroadcast::setChannelNr(int ChannelNr){ - this->mChannelNr = ChannelNr; - return 0; -} - -int cUPnPClassVideoBroadcast::setIcon(const char* IconURI){ - this->mIcon = IconURI; - return 0; -} - -int cUPnPClassVideoBroadcast::setRegion(const char* Region){ - this->mRegion = Region; - return 0; -} - -/**********************************************\ -* * -* Movie item * -* * -\**********************************************/ - -cUPnPClassMovie::cUPnPClassMovie(){ - this->mDVDRegionCode = 2; // Europe - this->mStorageMedium = UPNP_STORAGE_UNKNOWN; -} - -cUPnPClassMovie::~cUPnPClassMovie(){} - -//cString cUPnPClassMovie::createDIDLFragment(cStringList* Filter){ -// return NULL; -//} - -cStringList* cUPnPClassMovie::getPropertyList(){ - cStringList* Properties = cUPnPClassVideoItem::getPropertyList(); - Properties->Append(strdup(UPNP_PROP_DVDREGIONCODE)); - Properties->Append(strdup(UPNP_PROP_STORAGEMEDIUM)); - return Properties; -} - -bool cUPnPClassMovie::setProperty(const char* Property, const char* Value){ - bool ret; - if(!strcasecmp(Property, SQLITE_COL_DVDREGIONCODE) || !strcasecmp(Property, UPNP_PROP_DVDREGIONCODE)){ - ret = this->setDVDRegionCode(atoi(Value)); - } - else if(!strcasecmp(Property, SQLITE_COL_STORAGEMEDIUM) || !strcasecmp(Property, UPNP_PROP_STORAGEMEDIUM)){ - ret = this->setStorageMedium(Value); - } - else return cUPnPClassVideoItem::setProperty(Property, Value); - return ret<0?false:true; -} - -bool cUPnPClassMovie::getProperty(const char* Property, char** Value) const { - cString Val; - if(!strcasecmp(Property, SQLITE_COL_DVDREGIONCODE) || !strcasecmp(Property, UPNP_PROP_DVDREGIONCODE)){ - Val = itoa(this->getDVDRegionCode()); - } - else if(!strcasecmp(Property, SQLITE_COL_STORAGEMEDIUM) || !strcasecmp(Property, UPNP_PROP_STORAGEMEDIUM)){ - Val = this->getStorageMedium(); - } - else return cUPnPClassVideoItem::getProperty(Property, Value); - *Value = strdup0(*Val); - return true; -} - -int cUPnPClassMovie::setDVDRegionCode(int RegionCode){ -// http://en.wikipedia.org/wiki/DVD_region_code -// 0 Informal term meaning "worldwide". Region 0 is not an official setting; discs that bear the region 0 symbol either have no flag set or have region 1–6 flags set. -// 1 Canada, United States; U.S. territories; Bermuda -// 2 Western Europe; incl. United Kingdom, Ireland, and Central Europe; Eastern Europe, Western Asia; including Iran, Israel, Egypt; Japan, South Africa, Swaziland, Lesotho; French overseas territories -// 3 Southeast Asia; South Korea; Taiwan; Hong Kong; Macau -// 4 Mexico, Central and South America; Caribbean; Australia; New Zealand; Oceania; -// 5 Ukraine, Belarus, Russia, Continent of Africa, excluding Egypt, South Africa, Swaziland, and Lesotho; Central and South Asia, Mongolia, North Korea. -// 6 People's Republic of China -// 7 Reserved for future use (found in use on protected screener copies of MPAA-related DVDs and "media copies" of pre-releases in Asia) -// 8 International venues such as aircraft, cruise ships, etc.[1] -// ALL (9) Region ALL discs have all 8 flags set, allowing the disc to be played in any locale on any player. - if(0 <= RegionCode && RegionCode <= 9){ - this->mDVDRegionCode = RegionCode; - return 0; - } - else { - ERROR("Invalid DVD region code: %d", RegionCode); - return -1; - } -} - -int cUPnPClassMovie::setStorageMedium(const char* StorageMedium){ - if(!StorageMedium) this->mStorageMedium = UPNP_STORAGE_UNKNOWN; - else if( - strcasecmp(StorageMedium,UPNP_STORAGE_CD_DA) && - strcasecmp(StorageMedium,UPNP_STORAGE_CD_R) && - strcasecmp(StorageMedium,UPNP_STORAGE_CD_ROM) && - strcasecmp(StorageMedium,UPNP_STORAGE_CD_RW) && - strcasecmp(StorageMedium,UPNP_STORAGE_DAT) && - strcasecmp(StorageMedium,UPNP_STORAGE_DV) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_AUDIO) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RAM) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_ROM) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_MINUS) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_RW_PLUS) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_R_MINUS) && - strcasecmp(StorageMedium,UPNP_STORAGE_DVD_VIDEO) && - strcasecmp(StorageMedium,UPNP_STORAGE_D_VHS) && - strcasecmp(StorageMedium,UPNP_STORAGE_HDD) && - strcasecmp(StorageMedium,UPNP_STORAGE_HI8) && - strcasecmp(StorageMedium,UPNP_STORAGE_LD) && - strcasecmp(StorageMedium,UPNP_STORAGE_MD_AUDIO) && - strcasecmp(StorageMedium,UPNP_STORAGE_MD_PICTURE) && - strcasecmp(StorageMedium,UPNP_STORAGE_MICRO_MV) && - strcasecmp(StorageMedium,UPNP_STORAGE_MINI_DV) && - strcasecmp(StorageMedium,UPNP_STORAGE_NETWORK) && - strcasecmp(StorageMedium,UPNP_STORAGE_SACD) && - strcasecmp(StorageMedium,UPNP_STORAGE_S_VHS) && - strcasecmp(StorageMedium,UPNP_STORAGE_UNKNOWN) && - strcasecmp(StorageMedium,UPNP_STORAGE_VHS) && - strcasecmp(StorageMedium,UPNP_STORAGE_VHSC) && - strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO8) && - strcasecmp(StorageMedium,UPNP_STORAGE_VIDEO_CD) && - strcasecmp(StorageMedium,UPNP_STORAGE_W_VHS) - ){ - ERROR("Invalid storage type: %s", StorageMedium); - return -1; - } - else { - this->mStorageMedium = StorageMedium; - } - return 0; -} - -/**********************************************\ -* * -* Mediator factory * -* * -\**********************************************/ - -cUPnPObjectFactory* cUPnPObjectFactory::mInstance = NULL; - -cUPnPObjectFactory* cUPnPObjectFactory::getInstance(){ - if(!cUPnPObjectFactory::mInstance) - cUPnPObjectFactory::mInstance = new cUPnPObjectFactory(); - - if(cUPnPObjectFactory::mInstance) return cUPnPObjectFactory::mInstance; - else return NULL; -} - -cUPnPObjectFactory::cUPnPObjectFactory(){ - this->mDatabase = cSQLiteDatabase::getInstance(); -} - -void cUPnPObjectFactory::registerMediator(const char* UPnPClass, cMediatorInterface* Mediator){ - if(UPnPClass == NULL){ - ERROR("Class is undefined"); - return; - } - if(Mediator == NULL){ - ERROR("Mediator is undefined"); - return; - } - MESSAGE(VERBOSE_SDK, "Registering mediator for class '%s'", UPnPClass); - this->mMediators[UPnPClass] = Mediator; - MESSAGE(VERBOSE_SDK, "Now %d mediators registered", this->mMediators.size()); - return; -} - -void cUPnPObjectFactory::unregisterMediator(const char* UPnPClass, bool freeMediator){ - if(UPnPClass == NULL){ - ERROR("Class is undefined"); - return; - } - tMediatorMap::iterator MediatorIterator = this->mMediators.find(UPnPClass); - if(MediatorIterator==this->mMediators.end()){ - ERROR("No such mediator found for class '%s'", UPnPClass); - return; - } - MESSAGE(VERBOSE_SDK, "Unregistering mediator for class '%s'", UPnPClass); - this->mMediators.erase(MediatorIterator); - if(freeMediator) delete MediatorIterator->second; - MESSAGE(VERBOSE_SDK, "Now %d mediators registered", this->mMediators.size()); - return; -} - -cMediatorInterface* cUPnPObjectFactory::findMediatorByID(cUPnPObjectID ID){ - cString Format = "SELECT %s FROM %s WHERE %s=%Q"; - cString Column = NULL, Value = NULL, Class = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement(Format, SQLITE_COL_CLASS, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return NULL; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - ERROR("No such object with ID '%s'",*ID); - return NULL; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_CLASS)){ - Class = strdup0(*Value); - } - } - return this->findMediatorByClass(Class); -} - -cMediatorInterface* cUPnPObjectFactory::findMediatorByClass(const char* Class){ - if(!Class){ ERROR("No class specified"); return NULL; } - MESSAGE(VERBOSE_SQL, "Searching for mediator '%s' in %d mediators", Class, this->mMediators.size()); - tMediatorMap::iterator MediatorIterator = this->mMediators.find(Class); - if(MediatorIterator==this->mMediators.end()){ - ERROR("No matching mediator for class '%s'",Class); - return NULL; - } - else { - return MediatorIterator->second; - } -} - -cUPnPClassObject* cUPnPObjectFactory::getObject(cUPnPObjectID ID){ - cMediatorInterface* Mediator = this->findMediatorByID(ID); - if(Mediator) return Mediator->getObject(ID); - else { - return NULL; - } -} - -cUPnPClassObject* cUPnPObjectFactory::createObject(const char* UPnPClass, const char* Title, bool Restricted){ - cMediatorInterface* Mediator = this->findMediatorByClass(UPnPClass); - return Mediator->createObject(Title, Restricted); -} - -int cUPnPObjectFactory::deleteObject(cUPnPClassObject* Object){ - cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); - return Mediator->deleteObject(Object); -} - -int cUPnPObjectFactory::clearObject(cUPnPClassObject* Object){ - cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); - return Mediator->clearObject(Object); -} - -int cUPnPObjectFactory::saveObject(cUPnPClassObject* Object){ - cMediatorInterface* Mediator = this->findMediatorByClass(Object->getClass()); - return Mediator->saveObject(Object); -} - - /**********************************************\ - * * - * Mediators * - * * - \**********************************************/ - - /**********************************************\ - * * - * Object mediator * - * * - \**********************************************/ - -cUPnPObjectMediator::cUPnPObjectMediator(cMediaDatabase* MediaDatabase) : - mMediaDatabase(MediaDatabase){ - this->mDatabase = cSQLiteDatabase::getInstance(); -} - -cUPnPObjectMediator::~cUPnPObjectMediator(){ - delete this->mDatabase; - delete this->mMediaDatabase; -} - -int cUPnPObjectMediator::saveObject(cUPnPClassObject* Object){ - bool succesful = true; - - this->mDatabase->startTransaction(); - if(Object->getID() == -1) succesful = false; - else if(this->objectToDatabase(Object)) succesful = false; - else succesful = true; - - if(succesful){ - this->mDatabase->commitTransaction(); - Object->setModified(); - this->mMediaDatabase->cacheObject(Object); - this->mMediaDatabase->updateSystemID(); - return 0; - } - else { - this->mDatabase->rollbackTransaction(); - return -1; - } - return -1; -} - -int cUPnPObjectMediator::deleteObject(cUPnPClassObject* Object){ - cString Format = "DELETE FROM %s WHERE %s=%Q"; - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_OBJECTS, SQLITE_COL_OBJECTID, *Object->getID())){ - ERROR("Error while executing statement"); - return -1; - } - #ifdef SQLITE_CASCADE_DELETES - this->clearObject(Object); - #endif - delete Object; Object = NULL; - return 0; -} - -int cUPnPObjectMediator::clearObject(cUPnPClassObject* Object){ - cUPnPClassContainer* Container = Object->getContainer(); - if(Container){ - cList* List = Container->getObjectList(); - for(cUPnPClassObject* Child = List->First(); Child; Child = List->Next(Child)){ - if(this->deleteObject(Child)) return -1; - } - } - return 0; -} - -int cUPnPObjectMediator::initializeObject(cUPnPClassObject* Object, const char* Class, const char* Title, bool Restricted){ - cUPnPObjectID ObjectID = this->mMediaDatabase->getNextObjectID(); - if(Object->setID(ObjectID)){ - ERROR("Error while setting ID"); - return -1; - } - cUPnPClassObject* Root = this->mMediaDatabase->getObjectByID(0); - if(Root){ - Root->getContainer()->addObject(Object); - } - else { - Object->setParent(NULL); - } - if(Object->setClass(Class)){ - ERROR("Error while setting class"); - return -1; - } - if(Object->setTitle(Title)){ - ERROR("Error while setting title"); - return -1; - } - if(Object->setRestricted(Restricted)){ - ERROR("Error while setting restriction"); - return -1; - } - if(this->mDatabase->execStatement("INSERT INTO %s (%s, %s, %s, %s, %s) VALUES (%s, %s, %Q, %Q, %d)", - SQLITE_TABLE_OBJECTS, - SQLITE_COL_OBJECTID, - SQLITE_COL_PARENTID, - SQLITE_COL_CLASS, - SQLITE_COL_TITLE, - SQLITE_COL_RESTRICTED, - *Object->getID(), - *Object->getParentID(), - Object->getClass(), - Object->getTitle(), - Object->isRestricted()?1:0)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -cUPnPClassObject* cUPnPObjectMediator::getObject(cUPnPObjectID){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } - -cUPnPClassObject* cUPnPObjectMediator::createObject(const char*, bool){ WARNING("Getting instance of class 'Object' forbidden"); return NULL; } - -int cUPnPObjectMediator::objectToDatabase(cUPnPClassObject* Object){ - MESSAGE(VERBOSE_MODIFICATIONS, "Updating object #%s", *Object->getID()); - cString Format = "UPDATE %s SET %s WHERE %s='%s'"; - //cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Set=NULL; - //cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_PARENTID, - SQLITE_COL_CLASS, - SQLITE_COL_TITLE, - SQLITE_COL_RESTRICTED, - SQLITE_COL_CREATOR, - SQLITE_COL_WRITESTATUS, - NULL - }; - for(cString* Property = Properties; *(*Property)!=NULL; Property++){ - if(!Object->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); - return -1; - } - Set = cSQLiteDatabase::sprintf("%s%s%s=%Q", *Set?*Set:"", *Set?",":"", *(*Property), Value); - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_OBJECTS, *Set, SQLITE_COL_OBJECTID, *Object->mLastID)){ - ERROR("Error while executing statement"); - return -1; - } - // The update was successful --> the current ID is now also the LastID - Object->mLastID = Object->mID; - return 0; -} - -int cUPnPObjectMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%Q", - SQLITE_TABLE_OBJECTS, - SQLITE_COL_OBJECTID, - *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - ERROR("No such object with ID '%s'",*ID); - return -1; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ - if(!*Value || Object->setID(atoi(Value))){ - ERROR("Error while setting object ID"); - return -1; - } - this->mMediaDatabase->cacheObject(Object); - } - else if(!strcasecmp(Column, SQLITE_COL_PARENTID)){ - if(*Value){ - cUPnPObjectID RefID = atoi(Value); - cUPnPClassContainer* ParentObject; - if(RefID == -1){ - ParentObject = NULL; - } - else { - ParentObject = (cUPnPClassContainer*)this->mMediaDatabase->getObjectByID(RefID); - if(!ParentObject){ - ERROR("No such parent with ID '%s' found.",*RefID); - return -1; - } - } - Object->setParent(ParentObject); - } - else { - ERROR("Invalid parent ID"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_CLASS)){ - if(!*Value || Object->setClass(Value)){ - ERROR("Error while setting class"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_TITLE)){ - if(!*Value || Object->setTitle(Value)){ - ERROR("Error while setting title"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_RESTRICTED)){ - if(!*Value || Object->setRestricted(atoi(Value)==1?true:false)){ - ERROR("Error while setting restriction"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_CREATOR)){ - if(Object->setCreator(Value)){ - ERROR("Error while setting creator"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_WRITESTATUS)){ - if(*Value && Object->setWriteStatus(atoi(Value))){ - ERROR("Error while setting write status"); - return -1; - } - } - } - cUPnPResources::getInstance()->getResourcesOfObject(Object); - return 0; -} - - /**********************************************\ - * * - * Item mediator * - * * - \**********************************************/ - -cUPnPItemMediator::cUPnPItemMediator(cMediaDatabase* MediaDatabase) : - cUPnPObjectMediator(MediaDatabase){} - -int cUPnPItemMediator::objectToDatabase(cUPnPClassObject* Object){ - if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; - cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_REFERENCEID, - NULL - }; - for(cString* Property = Properties; *(*Property); Property++){ - Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); - if(!Object->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Object->getID()); - return -1; - } - Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); - - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_ITEMS, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -int cUPnPItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - if(cUPnPObjectMediator::databaseToObject(Object,ID)){ - ERROR("Error while loading object"); - return -1; - } - cUPnPClassItem* Item = (cUPnPClassItem*) Object; - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%Q", - SQLITE_TABLE_ITEMS, - SQLITE_COL_OBJECTID, - *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - MESSAGE(VERBOSE_SQL, "No item properties found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_REFERENCEID)){ - cUPnPObjectID RefID = atoi(Value); - cUPnPClassItem* RefObject; - if(RefID == -1){ - RefObject = NULL; - } - else { - RefObject = (cUPnPClassItem*)this->mMediaDatabase->getObjectByID(RefID); - if(!RefObject){ - ERROR("No such reference item with ID '%s' found.",*RefID); - return -1; - } - } - Item->setReference(RefObject); - } - } - return 0; -} - -cUPnPClassItem* cUPnPItemMediator::getObject(cUPnPObjectID ID){ - MESSAGE(VERBOSE_METADATA, "Getting Item with ID '%s'",*ID); - cUPnPClassItem* Object = new cUPnPClassItem; - if(this->databaseToObject(Object, ID)) return NULL; - return Object; -} - -cUPnPClassItem* cUPnPItemMediator::createObject(const char* Title, bool Restricted){ - MESSAGE(VERBOSE_MODIFICATIONS, "Creating Item '%s'",Title); - cUPnPClassItem* Object = new cUPnPClassItem; - if(this->initializeObject(Object, UPNP_CLASS_ITEM, Title, Restricted)) return NULL; - return Object; -} - - /**********************************************\ - * * - * Container mediator * - * * - \**********************************************/ - -cUPnPContainerMediator::cUPnPContainerMediator(cMediaDatabase* MediaDatabase) : - cUPnPObjectMediator(MediaDatabase){} - -int cUPnPContainerMediator::objectToDatabase(cUPnPClassObject* Object){ - if(cUPnPObjectMediator::objectToDatabase(Object)) return -1; - cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; - cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_DLNA_CONTAINERTYPE, - SQLITE_COL_SEARCHABLE, - SQLITE_COL_CONTAINER_UID, - NULL - }; - for(cString* Property = Properties; *(*Property); Property++){ - Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); - if(!Container->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),*Container->getID()); - return -1; - } - Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_CONTAINERS, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - for(unsigned int i=0; igetSearchClasses()->size(); i++){ - cClass Class = Container->getSearchClasses()->at(i); - Columns = cSQLiteDatabase::sprintf("%s,%s,%s", SQLITE_COL_OBJECTID, SQLITE_COL_CLASS, SQLITE_COL_CLASSDERIVED); - Values = cSQLiteDatabase::sprintf("%Q,%Q,%d", *Container->getID(), *Class.ID, Class.includeDerived?1:0); - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_SEARCHCLASS, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - } - // Create classes not necessary at the moment - return 0; -} - -int cUPnPContainerMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - if(cUPnPObjectMediator::databaseToObject(Object,ID)){ - ERROR("Error while loading object"); - return -1; - } - cUPnPClassContainer* Container = (cUPnPClassContainer*)Object; - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_CONTAINERS, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - MESSAGE(VERBOSE_SQL, "No item properties found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_DLNA_CONTAINERTYPE)){ - if(Container->setContainerType(Value)){ - ERROR("Error while setting container type"); - return -1; - } - } - if(!strcasecmp(Column, SQLITE_COL_CONTAINER_UID)){ - if(Container->setUpdateID((unsigned int)atoi(Value))){ - ERROR("Error while setting update ID"); - return -1; - } - } - if(!strcasecmp(Column, SQLITE_COL_SEARCHABLE)){ - if(Container->setSearchable(atoi(Value)==1?true:false)){ - ERROR("Error while setting searchable"); - return -1; - } - } - } - if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%s", SQLITE_COL_OBJECTID, - SQLITE_TABLE_OBJECTS, - SQLITE_COL_PARENTID, - *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - while(Rows->fetchRow(&Row)){ - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_OBJECTID)){ - Container->addObject(this->mMediaDatabase->getObjectByID(atoi(Value))); - } - } - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_SEARCHCLASS, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return -1; - } - std::vector SearchClasses; - Rows = this->mDatabase->getResultRows(); - while(Rows->fetchRow(&Row)){ - cClass Class; - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_CLASS)){ - Class.ID = strdup0(*Value); - } - else if(!strcasecmp(Column, SQLITE_COL_CLASSDERIVED)){ - Class.includeDerived = atoi(Value)==1?true:false; - } - } - SearchClasses.push_back(Class); - } - if(Container->setSearchClasses(SearchClasses)){ - ERROR("Error while setting search classes"); - return -1; - } - return 0; -} - -cUPnPClassContainer* cUPnPContainerMediator::createObject(const char* Title, bool Restricted){ - MESSAGE(VERBOSE_MODIFICATIONS, "Creating Container '%s'",Title); - cUPnPClassContainer* Object = new cUPnPClassContainer; - if(this->initializeObject(Object, UPNP_CLASS_CONTAINER, Title, Restricted)) return NULL; - return Object; -} - -cUPnPClassContainer* cUPnPContainerMediator::getObject(cUPnPObjectID ID){ - MESSAGE(VERBOSE_METADATA, "Getting Container with ID '%s'",*ID); - cUPnPClassContainer* Object = new cUPnPClassContainer; - if(this->databaseToObject(Object, ID)) return NULL; - return Object; -} - - /**********************************************\ - * * - * Video item mediator * - * * - \**********************************************/ - -cUPnPVideoItemMediator::cUPnPVideoItemMediator(cMediaDatabase* MediaDatabase) : - cUPnPItemMediator(MediaDatabase){} - -cUPnPClassVideoItem* cUPnPVideoItemMediator::createObject(const char* Title, bool Restricted){ - MESSAGE(VERBOSE_MODIFICATIONS, "Creating Video item '%s'",Title); - cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; - if(this->initializeObject(Object, UPNP_CLASS_VIDEO, Title, Restricted)) return NULL; - return Object; -} - -cUPnPClassVideoItem* cUPnPVideoItemMediator::getObject(cUPnPObjectID ID){ - MESSAGE(VERBOSE_METADATA, "Getting Video item with ID '%s'",*ID); - cUPnPClassVideoItem* Object = new cUPnPClassVideoItem; - if(this->databaseToObject(Object, ID)) return NULL; - return Object; -} - -int cUPnPVideoItemMediator::objectToDatabase(cUPnPClassObject* Object){ - if(cUPnPItemMediator::objectToDatabase(Object)) return -1; - cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; - cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_GENRE, - SQLITE_COL_LONGDESCRIPTION, - SQLITE_COL_PRODUCER, - SQLITE_COL_RATING, - SQLITE_COL_ACTOR, - SQLITE_COL_DIRECTOR, - SQLITE_COL_DESCRIPTION, - SQLITE_COL_PUBLISHER, - SQLITE_COL_LANGUAGE, - SQLITE_COL_RELATION, - NULL - }; - for(cString* Property = Properties; *(*Property); Property++){ - Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); - if(!VideoItem->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoItem->getID()); - return -1; - } - Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOITEMS, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -int cUPnPVideoItemMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - if(cUPnPItemMediator::databaseToObject(Object,ID)){ - ERROR("Error while loading object"); - return -1; - } - cUPnPClassVideoItem* VideoItem = (cUPnPClassVideoItem*)Object; - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOITEMS, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - MESSAGE(VERBOSE_SQL, "No item properties found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_GENRE)){ - if(VideoItem->setGenre(Value)){ - ERROR("Error while setting genre"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_LONGDESCRIPTION)){ - if(VideoItem->setLongDescription(Value)){ - ERROR("Error while setting long description"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_PRODUCER)){ - if(VideoItem->setProducers(Value)){ - ERROR("Error while setting producers"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_RATING)){ - if(VideoItem->setRating(Value)){ - ERROR("Error while setting rating"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_ACTOR)){ - if(VideoItem->setActors(Value)){ - ERROR("Error while setting actors"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_DIRECTOR)){ - if(VideoItem->setDirectors(Value)){ - ERROR("Error while setting directors"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_DESCRIPTION)){ - if(VideoItem->setDescription(Value)){ - ERROR("Error while setting description"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_PUBLISHER)){ - if(VideoItem->setPublishers(Value)){ - ERROR("Error while setting publishers"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_LANGUAGE)){ - if(VideoItem->setLanguage(Value)){ - ERROR("Error while setting language"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_RELATION)){ - if(VideoItem->setRelations(Value)){ - ERROR("Error while setting relations"); - return -1; - } - } - } - return 0; -} - - /**********************************************\ - * * - * Video broadcast item mediator * - * * - \**********************************************/ - -cUPnPVideoBroadcastMediator::cUPnPVideoBroadcastMediator(cMediaDatabase* MediaDatabase) : - cUPnPVideoItemMediator(MediaDatabase){} - -cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::createObject(const char* Title, bool Restricted){ - MESSAGE(VERBOSE_MODIFICATIONS, "Creating Video broadcast '%s'",Title); - cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; - if(this->initializeObject(Object, UPNP_CLASS_VIDEOBC, Title, Restricted)) return NULL; - return Object; -} - -cUPnPClassVideoBroadcast* cUPnPVideoBroadcastMediator::getObject(cUPnPObjectID ID){ - MESSAGE(VERBOSE_METADATA, "Getting Video broadcast with ID '%s'",*ID); - cUPnPClassVideoBroadcast* Object = new cUPnPClassVideoBroadcast; - if(this->databaseToObject(Object, ID)) return NULL; - return Object; -} - -int cUPnPVideoBroadcastMediator::objectToDatabase(cUPnPClassObject* Object){ - if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; - cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; - cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_ICON, - SQLITE_COL_REGION, - SQLITE_COL_CHANNELNAME, - SQLITE_COL_CHANNELNR, - NULL - }; - for(cString* Property = Properties; *(*Property); Property++){ - Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); - if(!VideoBroadcast->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),* VideoBroadcast->getID()); - return -1; - } - Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOBROADCASTS, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -int cUPnPVideoBroadcastMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - if(cUPnPVideoItemMediator::databaseToObject(Object,ID)){ - ERROR("Error while loading object"); - return -1; - } - cUPnPClassVideoBroadcast* VideoBroadcast = (cUPnPClassVideoBroadcast*)Object; - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_VIDEOBROADCASTS, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - MESSAGE(VERBOSE_SQL, "No item properties found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_ICON)){ - if(VideoBroadcast->setIcon(Value)){ - ERROR("Error while setting icon"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_REGION)){ - if(VideoBroadcast->setRegion(Value)){ - ERROR("Error while setting region"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_CHANNELNR)){ - if(VideoBroadcast->setChannelNr(atoi(Value))){ - ERROR("Error while setting channel number"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_CHANNELNAME)){ - if(VideoBroadcast->setChannelName(Value)){ - ERROR("Error while setting channel name"); - return -1; - } - } - } - return 0; -} - -/**********************************************\ -* * -* Movie item mediator * -* * -\**********************************************/ - -cUPnPMovieMediator::cUPnPMovieMediator(cMediaDatabase* MediaDatabase) : - cUPnPVideoItemMediator(MediaDatabase){} - -cUPnPClassMovie* cUPnPMovieMediator::createObject(const char* Title, bool Restricted){ - MESSAGE(VERBOSE_MODIFICATIONS, "Creating movie '%s'",Title); - cUPnPClassMovie* Object = new cUPnPClassMovie; - if(this->initializeObject(Object, UPNP_CLASS_MOVIE, Title, Restricted)) return NULL; - return Object; -} - -cUPnPClassMovie* cUPnPMovieMediator::getObject(cUPnPObjectID ID){ - MESSAGE(VERBOSE_METADATA, "Getting movie with ID '%s'",*ID); - cUPnPClassMovie* Object = new cUPnPClassMovie; - if(this->databaseToObject(Object, ID)) return NULL; - return Object; -} - -int cUPnPMovieMediator::objectToDatabase(cUPnPClassObject* Object){ - if(cUPnPVideoItemMediator::objectToDatabase(Object)) return -1; - cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; - cString Format = "INSERT OR REPLACE INTO %s (%s) VALUES (%s);"; - cString Columns=NULL, Values=NULL; - char *Value=NULL; - cString Properties[] = { - SQLITE_COL_OBJECTID, - SQLITE_COL_DVDREGIONCODE, - SQLITE_COL_STORAGEMEDIUM, - NULL - }; - for(cString* Property = Properties; *(*Property); Property++){ - Columns = cSQLiteDatabase::sprintf("%s%s%s", *Columns?*Columns:"", *Columns?",":"", *(*Property)); - if(!Movie->getProperty(*Property, &Value)){ - ERROR("No such property '%s' in object with ID '%s'",*(*Property),* Movie->getID()); - return -1; - } - Values = cSQLiteDatabase::sprintf("%s%s%Q", *Values?*Values:"", *Values?",":"", Value); - } - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_MOVIES, *Columns, *Values)){ - ERROR("Error while executing statement"); - return -1; - } - return 0; -} - -int cUPnPMovieMediator::databaseToObject(cUPnPClassObject* Object, cUPnPObjectID ID){ - if(cUPnPVideoItemMediator::databaseToObject(Object,ID)){ - ERROR("Error while loading object"); - return -1; - } - cUPnPClassMovie* Movie = (cUPnPClassMovie*)Object; - cString Format = "SELECT * FROM %s WHERE %s=%s"; - cString Column = NULL, Value = NULL; - cRows* Rows; cRow* Row; - if(this->mDatabase->execStatement(Format, SQLITE_TABLE_MOVIES, SQLITE_COL_OBJECTID, *ID)){ - ERROR("Error while executing statement"); - return -1; - } - Rows = this->mDatabase->getResultRows(); - if(!Rows->fetchRow(&Row)){ - MESSAGE(VERBOSE_SQL, "No item properties found"); - return 0; - } - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_DVDREGIONCODE)){ - if(Movie->setDVDRegionCode(atoi(Value))){ - ERROR("Error while setting icon"); - return -1; - } - } - else if(!strcasecmp(Column, SQLITE_COL_STORAGEMEDIUM)){ - if(Movie->setStorageMedium(Value)){ - ERROR("Error while setting region"); - return -1; - } - } - } - return 0; -} \ No newline at end of file diff --git a/database/resources.cpp b/database/resources.cpp deleted file mode 100644 index 23403d5..0000000 --- a/database/resources.cpp +++ /dev/null @@ -1,355 +0,0 @@ -/* - * File: resources.cpp - * Author: savop - * - * Created on 30. September 2009, 15:17 - */ - -#include -#include -#include "upnp/dlna.h" -#include -#include "resources.h" -#include "avdetector.h" - -cUPnPResource::cUPnPResource(){ - this->mBitrate = 0; - this->mBitsPerSample = 0; - this->mColorDepth = 0; - this->mDuration = NULL; - this->mImportURI = NULL; - this->mNrAudioChannels = 0; - this->mProtocolInfo = NULL; - this->mResolution = NULL; - this->mResource = NULL; - this->mResourceID = 0; - this->mSampleFrequency = 0; - this->mSize = 0; - this->mContentType = NULL; -} - -time_t cUPnPResource::getLastModification() const { - time_t Time; - const cRecording* Recording; - const cEvent* Event; - switch(this->mResourceType){ - case UPNP_RESOURCE_CHANNEL: - case UPNP_RESOURCE_URL: - Time = time(NULL); - break; - case UPNP_RESOURCE_RECORDING: - Recording = Recordings.GetByName(this->mResource); - Event = (Recording)?Recording->Info()->GetEvent():NULL; - Time = (Event)?Event->EndTime():time(NULL); - break; - case UPNP_RESOURCE_FILE: - //break; - default: - ERROR("Invalid resource type. This resource might be broken"); - Time = -1; - } - return Time; -} - -cUPnPResources* cUPnPResources::mInstance = NULL; - -cUPnPResources::cUPnPResources(){ - this->mResources = new cHash; - this->mMediator = new cUPnPResourceMediator; - this->mDatabase = cSQLiteDatabase::getInstance(); -} - -cUPnPResources::~cUPnPResources(){ - delete this->mResources; - delete this->mMediator; -} - -cUPnPResources* cUPnPResources::getInstance(){ - if(!cUPnPResources::mInstance) - cUPnPResources::mInstance = new cUPnPResources(); - if(cUPnPResources::mInstance) return cUPnPResources::mInstance; - else return NULL; -} - -int cUPnPResources::loadResources(){ - if(this->mDatabase->execStatement("SELECT %s FROM %s",SQLITE_COL_RESOURCEID,SQLITE_TABLE_RESOURCES)){ - ERROR("Error while executing statement"); - return -1; - } - cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; - cString Column = NULL, Value = NULL; - while(Rows->fetchRow(&Row)){ - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_RESOURCEID)){ - unsigned int ResourceID = (unsigned int)atoi(Value); - this->getResource(ResourceID); - } - } - } - return 0; -} - -int cUPnPResources::getResourcesOfObject(cUPnPClassObject* Object){ - if(this->mDatabase->execStatement("SELECT %s FROM %s WHERE %s=%Q", - SQLITE_COL_RESOURCEID, - SQLITE_TABLE_RESOURCES, - SQLITE_COL_OBJECTID, - *Object->getID())){ - ERROR("Error while executing statement"); - return -1; - } - cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; - cString Column = NULL, Value = NULL; - while(Rows->fetchRow(&Row)){ - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(Column, SQLITE_COL_RESOURCEID)){ - unsigned int ResourceID = (unsigned int)atoi(Value); - Object->addResource(this->getResource(ResourceID)); - } - } - } - return 0; -} - -cUPnPResource* cUPnPResources::getResource(unsigned int ResourceID){ - cUPnPResource* Resource; - if((Resource = this->mResources->Get(ResourceID))){ - MESSAGE(VERBOSE_METADATA, "Found cached resource"); - return Resource; - } - else if((Resource = this->mMediator->getResource(ResourceID))){ - MESSAGE(VERBOSE_METADATA, "Found resource in database"); - this->mResources->Add(Resource, ResourceID); - return Resource; - } - else { - ERROR("No such resource with ID '%d'", ResourceID); - return NULL; - } -} - -int cUPnPResources::createFromRecording(cUPnPClassVideoItem* Object, cRecording* Recording){ - if(!Object || !Recording){ - ERROR("Invalid input arguments"); - return -1; - } - - cAudioVideoDetector* Detector = new cAudioVideoDetector(Recording); - - if(Detector->detectProperties()){ - ERROR("Error while detecting video properties"); - delete Detector; - return -1; - } - - if(!Detector->getDLNAProfile()){ - ERROR("No DLNA profile found for Recording %s", Recording->Name()); - delete Detector; - return -1; - } - - const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Detector->getDLNAProfile()); - - MESSAGE(VERBOSE_METADATA, "Protocol info: %s", ProtocolInfo); - - cString ResourceFile = Recording->FileName(); - cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_RECORDING,ResourceFile, Detector->getDLNAProfile()->mime, ProtocolInfo); - Resource->mBitrate = Detector->getBitrate(); - Resource->mBitsPerSample = Detector->getBitsPerSample(); - Resource->mDuration = duration(Detector->getDuration(), AVDETECTOR_TIME_BASE); - Resource->mResolution = (Detector->getWidth() && Detector->getHeight()) ? *cString::sprintf("%dx%d",Detector->getWidth(), Detector->getHeight()) : NULL; - Resource->mSampleFrequency = Detector->getSampleFrequency(); - Resource->mSize = Detector->getFileSize(); - Resource->mNrAudioChannels = Detector->getNumberOfAudioChannels(); - Resource->mImportURI = NULL; - Resource->mColorDepth = 0; - Object->addResource(Resource); - this->mMediator->saveResource(Object, Resource); - this->mResources->Add(Resource, Resource->getID()); - - delete Detector; - return 0; -} - -int cUPnPResources::createFromFile(cUPnPClassItem* , cString ){ - MESSAGE(VERBOSE_SDK, "To be done"); - return -1; -} - -int cUPnPResources::createFromChannel(cUPnPClassVideoBroadcast* Object, cChannel* Channel){ - if(!Object || !Channel){ - ERROR("Invalid input arguments"); - return -1; - } - - cAudioVideoDetector* Detector = new cAudioVideoDetector(Channel); - - if(Detector->detectProperties()){ - ERROR("Cannot detect channel properties"); - delete Detector; - return -1; - } - - if(!Detector->getDLNAProfile()){ - ERROR("No DLNA profile found for Channel %s", *Channel->GetChannelID().ToString()); - delete Detector; - return -1; - } - - const char* ProtocolInfo = cDlna::getInstance()->getProtocolInfo(Detector->getDLNAProfile()); - - MESSAGE(VERBOSE_METADATA, "Protocol info: %s", ProtocolInfo); - - // Index which may be used to indicate different resources with same channel ID - // For instance a different DVB card - // Not used yet. - int index = 0; - - cString ResourceFile = cString::sprintf("%s:%d", *Channel->GetChannelID().ToString(), index); - cUPnPResource* Resource = this->mMediator->newResource(Object, UPNP_RESOURCE_CHANNEL,ResourceFile, Detector->getDLNAProfile()->mime, ProtocolInfo); - Resource->mBitrate = Detector->getBitrate(); - Resource->mBitsPerSample = Detector->getBitsPerSample(); - Resource->mDuration = duration(Detector->getDuration()); - Resource->mResolution = (Detector->getWidth() && Detector->getHeight()) ? *cString::sprintf("%dx%d",Detector->getWidth(), Detector->getHeight()) : NULL; - Resource->mSampleFrequency = Detector->getSampleFrequency(); - Resource->mSize = Detector->getFileSize(); - Resource->mNrAudioChannels = Detector->getNumberOfAudioChannels(); - Resource->mImportURI = NULL; - Resource->mColorDepth = 0; - Object->addResource(Resource); - this->mMediator->saveResource(Object, Resource); - this->mResources->Add(Resource, Resource->getID()); - - delete Detector; - return 0; -} - -cUPnPResourceMediator::cUPnPResourceMediator(){ - this->mDatabase = cSQLiteDatabase::getInstance(); -} - -cUPnPResourceMediator::~cUPnPResourceMediator(){} - -cUPnPResource* cUPnPResourceMediator::getResource(unsigned int ResourceID){ - cUPnPResource* Resource = new cUPnPResource; - Resource->mResourceID = ResourceID; - if(this->mDatabase->execStatement("SELECT * FROM %s WHERE %s=%d", - SQLITE_TABLE_RESOURCES, - SQLITE_COL_RESOURCEID, - ResourceID)){ - ERROR("Error while executing statement"); - return NULL; - } - cRows* Rows = this->mDatabase->getResultRows(); cRow* Row; - if(!Rows->fetchRow(&Row)){ - ERROR("No such resource found"); - return NULL; - } - cString Column = NULL, Value = NULL; - while(Row->fetchColumn(&Column, &Value)){ - if(!strcasecmp(SQLITE_COL_PROTOCOLINFO, Column)){ - Resource->mProtocolInfo = Value; - } - else if(!strcasecmp(SQLITE_COL_RESOURCE, Column)){ - Resource->mResource = Value; - } - else if(!strcasecmp(SQLITE_COL_SIZE, Column)){ - Resource->mSize = (off64_t)(*Value?atol(Value):0); - } - else if(!strcasecmp(SQLITE_COL_DURATION, Column)){ - Resource->mDuration = Value; - } - else if(!strcasecmp(SQLITE_COL_BITRATE, Column)){ - Resource->mBitrate = *Value?atoi(Value):0; - } - else if(!strcasecmp(SQLITE_COL_SAMPLEFREQUENCE, Column)){ - Resource->mSampleFrequency = *Value?atoi(Value):0; - } - else if(!strcasecmp(SQLITE_COL_BITSPERSAMPLE, Column)){ - Resource->mBitsPerSample = *Value?atoi(Value):0; - } - else if(!strcasecmp(SQLITE_COL_NOAUDIOCHANNELS, Column)){ - Resource->mNrAudioChannels = *Value?atoi(Value):0; - } - else if(!strcasecmp(SQLITE_COL_COLORDEPTH, Column)){ - Resource->mColorDepth = *Value?atoi(Value):0; - } - else if(!strcasecmp(SQLITE_COL_RESOLUTION, Column)){ - Resource->mResolution = Value; - } - else if(!strcasecmp(SQLITE_COL_CONTENTTYPE, Column)){ - Resource->mContentType = Value; - } - else if(!strcasecmp(SQLITE_COL_RESOURCETYPE, Column)){ - Resource->mResourceType = *Value?atoi(Value):0; - } - } - return Resource; -} - -int cUPnPResourceMediator::saveResource(cUPnPClassObject* Object, cUPnPResource* Resource){ - - cString Format = "UPDATE %s SET %s=%Q," - "%s=%Q," - "%s=%Q," - "%s=%lld," - "%s=%Q," - "%s=%d," - "%s=%d," - "%s=%d," - "%s=%d," - "%s=%d," - "%s=%Q," - "%s=%Q," - "%s=%d" - " WHERE %s=%d"; - - if(this->mDatabase->execStatement(Format, - SQLITE_TABLE_RESOURCES, - SQLITE_COL_OBJECTID, *Object->getID(), - SQLITE_COL_PROTOCOLINFO, *Resource->mProtocolInfo, - SQLITE_COL_RESOURCE, *Resource->mResource, - SQLITE_COL_SIZE, Resource->mSize, - SQLITE_COL_DURATION, *Resource->mDuration, - SQLITE_COL_BITRATE, Resource->mBitrate, - SQLITE_COL_SAMPLEFREQUENCE, Resource->mSampleFrequency, - SQLITE_COL_BITSPERSAMPLE, Resource->mBitsPerSample, - SQLITE_COL_NOAUDIOCHANNELS, Resource->mNrAudioChannels, - SQLITE_COL_COLORDEPTH, Resource->mColorDepth, - SQLITE_COL_RESOLUTION, *Resource->mResolution, - SQLITE_COL_CONTENTTYPE, *Resource->mContentType, - SQLITE_COL_RESOURCETYPE, Resource->mResourceType, - SQLITE_COL_RESOURCEID, Resource->mResourceID)){ - ERROR("Error while executing statement"); - return -1; - } - - return 0; -} - -cUPnPResource* cUPnPResourceMediator::newResource(cUPnPClassObject* Object, int ResourceType, cString ResourceFile, cString ContentType, cString ProtocolInfo){ - cUPnPResource* Resource = new cUPnPResource; - - if(this->mDatabase->execStatement("INSERT INTO %s (%s,%s,%s,%s,%s) VALUES (%Q,%Q,%Q,%Q,%d)", - SQLITE_TABLE_RESOURCES, - SQLITE_COL_OBJECTID, - SQLITE_COL_RESOURCE, - SQLITE_COL_PROTOCOLINFO, - SQLITE_COL_CONTENTTYPE, - SQLITE_COL_RESOURCETYPE, - *Object->getID(), - *ResourceFile, - *ProtocolInfo, - *ContentType, - ResourceType)){ - ERROR("Error while executing statement"); - return NULL; - } - Resource->mResourceID = (unsigned int)this->mDatabase->getLastInsertRowID(); - Resource->mResource = ResourceFile; - Resource->mProtocolInfo = ProtocolInfo; - Resource->mContentType = ContentType; - Resource->mResourceType = ResourceType; - - return Resource; -} \ No newline at end of file diff --git a/dlna/avdetector.cpp b/dlna/avdetector.cpp deleted file mode 100644 index 461b375..0000000 --- a/dlna/avdetector.cpp +++ /dev/null @@ -1,378 +0,0 @@ -/* - * File: avdetector.cpp - * Author: savop - * - * Created on 26. Oktober 2009, 13:01 - */ - -#include "avdetector.h" -#include "profiles/container.h" -#include "object.h" -#include - -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 deleted file mode 100644 index 24da1be..0000000 --- a/dlna/dlna.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - * File: dlna.cpp - * Author: savop - * - * Created on 18. April 2009, 23:27 - */ - -#include -#include -#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::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( - " \ - \ - \ - 1 \ - 0 \ - \ - %s \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - %d \ - %d \ - %d \ - %s \ - \ - \ - %s \ - <%s:X_DLNADOC>%s \ - \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - %s \ - %s \ - %s \ - %s \ - %s \ - \ - \ - \ - ", - 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 deleted file mode 100644 index e2b77e2..0000000 --- a/dlna/profiles/aac.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * 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 deleted file mode 100644 index 0b7841e..0000000 --- a/dlna/profiles/ac3.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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 deleted file mode 100644 index 8c7696f..0000000 --- a/dlna/profiles/amr.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * 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 deleted file mode 100644 index 95f28fd..0000000 --- a/dlna/profiles/atrac3plus.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * 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 deleted file mode 100644 index a4418ef..0000000 --- a/dlna/profiles/container.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * File: container.cpp - * Author: savop - * - * Created on 8. Januar 2010, 11:45 - */ - -#include "profiles/container.h" -#include "../../common.h" -#include - -#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; icodec_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 deleted file mode 100644 index 9f2d67b..0000000 --- a/dlna/profiles/mpeg1.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * 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 deleted file mode 100644 index 2816095..0000000 --- a/dlna/profiles/mpeg2.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/* - * 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 deleted file mode 100644 index 80e91b4..0000000 --- a/dlna/profiles/mpeg4_p10.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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 deleted file mode 100644 index 5ed58ab..0000000 --- a/dlna/profiles/mpeg4_p2.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * 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 deleted file mode 100644 index 46ccc24..0000000 --- a/dlna/profiles/png.cpp +++ /dev/null @@ -1,11 +0,0 @@ -/* - * 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 deleted file mode 100644 index 3956d4c..0000000 --- a/dlna/profiles/wma.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * 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 deleted file mode 100644 index 02e8de4..0000000 --- a/dlna/profiles/wmv9.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* - * 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/http/icons/upnpIconLrg.jpeg b/http/icons/upnpIconLrg.jpeg deleted file mode 100755 index 6421267..0000000 Binary files a/http/icons/upnpIconLrg.jpeg and /dev/null differ diff --git a/http/icons/upnpIconLrg.png b/http/icons/upnpIconLrg.png deleted file mode 100755 index d93e7c0..0000000 Binary files a/http/icons/upnpIconLrg.png and /dev/null differ diff --git a/http/icons/upnpIconSm.jpeg b/http/icons/upnpIconSm.jpeg deleted file mode 100755 index b163f05..0000000 Binary files a/http/icons/upnpIconSm.jpeg and /dev/null differ diff --git a/http/icons/upnpIconSm.png b/http/icons/upnpIconSm.png deleted file mode 100755 index d4320f4..0000000 Binary files a/http/icons/upnpIconSm.png and /dev/null differ diff --git a/http/xml/cds_scpd.xml b/http/xml/cds_scpd.xml deleted file mode 100644 index dff4252..0000000 --- a/http/xml/cds_scpd.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - -1 -0 - - - -GetSearchCapabilities - - -SearchCaps -out -SearchCapabilities - - - - -GetSortCapabilities - - -SortCaps -out -SortCapabilities - - - - -GetSystemUpdateID - - -Id -out -SystemUpdateID - - - - -Browse - - -ObjectID -in -A_ARG_TYPE_ObjectID - - -BrowseFlag -in -A_ARG_TYPE_BrowseFlag - - -Filter -in -A_ARG_TYPE_Filter - - -StartingIndex -in -A_ARG_TYPE_Index - - -RequestedCount -in -A_ARG_TYPE_Count - - -SortCriteria -in -A_ARG_TYPE_SortCriteria - - -Result -out -A_ARG_TYPE_Result - - -NumberReturned -out -A_ARG_TYPE_Count - - -TotalMatches -out -A_ARG_TYPE_Count - - -UpdateID -out -A_ARG_TYPE_UpdateID - - - - - - -A_ARG_TYPE_ObjectID -string - - -A_ARG_TYPE_Result -string - - -A_ARG_TYPE_BrowseFlag -string - -BrowseMetadata -BrowseDirectChildren - - - -A_ARG_TYPE_Filter -string - - -A_ARG_TYPE_SortCriteria -string - - -A_ARG_TYPE_Index -ui4 - - -A_ARG_TYPE_Count -ui4 - - -A_ARG_TYPE_UpdateID -ui4 - - -SearchCapabilities -string - - -SortCapabilities -string - - -SystemUpdateID -ui4 - - - - diff --git a/http/xml/cms_scpd.xml b/http/xml/cms_scpd.xml deleted file mode 100644 index e4071f9..0000000 --- a/http/xml/cms_scpd.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - 1 - 0 - - - - GetProtocolInfo - - - Source - out - SourceProtocolInfo - - - Sink - out - SinkProtocolInfo - - - - - GetCurrentConnectionIDs - - - ConnectionIDs - out - CurrentConnectionIDs - - - - - GetCurrentConnectionInfo - - - ConnectionID - in - A_ARG_TYPE_ConnectionID - - - RcsID - out - A_ARG_TYPE_RcsID - - - AVTransportID - out - A_ARG_TYPE_AVTransportID - - - ProtocolInfo - out - A_ARG_TYPE_ProtocolInfo - - - PeerConnectionManager - out - A_ARG_TYPE_ConnectionManager - - - PeerConnectionID - out - A_ARG_TYPE_ConnectionID - - - Direction - out - A_ARG_TYPE_Direction - - - Status - out - A_ARG_TYPE_ConnectionStatus - - - - - - - SourceProtocolInfo - string - - - SinkProtocolInfo - string - - - CurrentConnectionIDs - string - - - A_ARG_TYPE_ConnectionStatus - string - - OK - ContentFormatMismatch - InsufficientBandwidth - UnreliableChannel - Unknown - - - - A_ARG_TYPE_ConnectionManager - string - - - A_ARG_TYPE_Direction - string - - Input - Output - - - - A_ARG_TYPE_ProtocolInfo - string - - - A_ARG_TYPE_ConnectionID - i4 - - - A_ARG_TYPE_AVTransportID - i4 - - - A_ARG_TYPE_RcsID - i4 - - - - diff --git a/inc/avdetector.h b/inc/avdetector.h deleted file mode 100644 index 923608f..0000000 --- a/inc/avdetector.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * File: avdetector.h - * Author: savop - * - * Created on 26. Oktober 2009, 13:02 - */ - -#ifndef _AVDETECTOR_H -#define _AVDETECTOR_H - -#include "profiles.h" -#include -#include - -extern "C" { -#include -#include -} - -/** - * 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 deleted file mode 100644 index 10f92e7..0000000 --- a/inc/config.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * File: config.h - * Author: savop - * - * Created on 15. August 2009, 13:03 - */ - -#ifndef _CONFIG_H -#define _CONFIG_H - -#include -#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 deleted file mode 100644 index 5bb595f..0000000 --- a/inc/database.h +++ /dev/null @@ -1,1024 +0,0 @@ -/* - * File: database.h - * Author: savop - * - * Created on 3. September 2009, 22:20 - */ - -#ifndef _DATABASE_H -#define _DATABASE_H - -#include -#include -#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 { - 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 deleted file mode 100644 index 1dc57bf..0000000 --- a/inc/filehandle.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * File: filehandle.h - * Author: savop - * - * Created on 15. Oktober 2009, 10:49 - */ - -#ifndef _FILEHANDLE_H -#define _FILEHANDLE_H - -#include -#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 deleted file mode 100644 index 379f453..0000000 --- a/inc/livereceiver.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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 -#include -#include - -#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 deleted file mode 100644 index 1db0480..0000000 --- a/inc/menusetup.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * File: menusetup.h - * Author: savop - * - * Created on 19. April 2009, 16:50 - */ - -#ifndef _CMENUSETUPUPNP_H -#define _CMENUSETUPUPNP_H - -#include -#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 deleted file mode 100644 index e6200e1..0000000 --- a/inc/metadata.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * File: metadata.h - * Author: savop - * - * Created on 28. Mai 2009, 21:14 - */ - -#ifndef _METADATA_H -#define _METADATA_H - -#include -#include -#include -#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* 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 deleted file mode 100644 index 1031589..0000000 --- a/inc/object.h +++ /dev/null @@ -1,1576 +0,0 @@ -/* - * 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 -#include -#include -#include -#include - -/** - * 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 { -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* mResources; ///< The resources of this object - cHash* 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* 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* 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 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* 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 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 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 tClassVector* 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 tClassVector* 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 IXML_Node* createDIDLFragment(IXML_Document* Document, 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 IXML_Node* createDIDLFragment(IXML_Document* Document, 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 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 deleted file mode 100644 index c50e4ee..0000000 --- a/inc/profiles.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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 deleted file mode 100644 index e3f4dab..0000000 --- a/inc/profiles/aac.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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 deleted file mode 100644 index 1d1ccf2..0000000 --- a/inc/profiles/ac3.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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 deleted file mode 100644 index 73cc9ee..0000000 --- a/inc/profiles/amr.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * 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 deleted file mode 100644 index 64f7c15..0000000 --- a/inc/profiles/atrac3plus.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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 deleted file mode 100644 index 26cec8e..0000000 --- a/inc/profiles/container.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 -#include -} - -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 deleted file mode 100644 index 42d2420..0000000 --- a/inc/profiles/jpeg.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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 deleted file mode 100644 index 0643b77..0000000 --- a/inc/profiles/lpcm.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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 deleted file mode 100644 index 9110bc0..0000000 --- a/inc/profiles/mpa.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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 deleted file mode 100644 index 7e7637e..0000000 --- a/inc/profiles/mpeg1.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * 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 deleted file mode 100644 index 6abbbb5..0000000 --- a/inc/profiles/mpeg2.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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 deleted file mode 100644 index f58ac43..0000000 --- a/inc/profiles/mpeg4_p10.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * 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 deleted file mode 100644 index 7437afd..0000000 --- a/inc/profiles/mpeg4_p2.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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 deleted file mode 100644 index 69d4bcd..0000000 --- a/inc/profiles/png.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * 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 deleted file mode 100644 index 7ae01d2..0000000 --- a/inc/profiles/profile_data.h +++ /dev/null @@ -1,213 +0,0 @@ -/* - * File: profile_data.h - * Author: savop - * - * Created on 5. Januar 2010, 12:27 - */ - -#ifndef _PROFILE_DATA_H -#define _PROFILE_DATA_H - -#ifdef __cplusplus -#include -extern "C" { -#include -#include -} -#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 { - /** - * true if VBR, false 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 multiplier - */ - 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 deleted file mode 100644 index 80e25ec..0000000 --- a/inc/profiles/wma.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 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 deleted file mode 100644 index fd69499..0000000 --- a/inc/profiles/wmv9.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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 deleted file mode 100644 index 376ca3c..0000000 --- a/inc/recplayer.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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 - -/** - * 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 deleted file mode 100644 index a655de8..0000000 --- a/inc/resources.h +++ /dev/null @@ -1,318 +0,0 @@ -/* - * 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 -#include - -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* 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 deleted file mode 100644 index ef162b1..0000000 --- a/inc/search.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * File: search.h - * Author: savop - * - * Created on 27. August 2009, 21:21 - */ - -#ifndef _SEARCH_H -#define _SEARCH_H - -#include -#include -#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 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* mCriteriaList; - bool parseSort(const char* Sort); - void pushProperty(const char* Property); - void pushDirection(const char Direction); - cList* 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* 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 deleted file mode 100644 index 260ac57..0000000 --- a/inc/server.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - * File: server.h - * Author: savop - * - * Created on 19. April 2009, 17:42 - */ - -#ifndef _SERVER_H -#define _SERVER_H - -#include -#include -#include -#include -#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 deleted file mode 100644 index 6ed2987..0000000 --- a/inc/upnp/connectionmanager.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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 Connection Manager Service 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* mVirtualConnections; - cString mSupportedProtocols; -}; - -#endif /* _CONNECTIONMANAGER_H */ - diff --git a/inc/upnp/contentdirectory.h b/inc/upnp/contentdirectory.h deleted file mode 100644 index ec32dfa..0000000 --- a/inc/upnp/contentdirectory.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * File: contentdirectory.h - * Author: savop - * - * Created on 21. August 2009, 16:12 - */ - -#ifndef _CONTENTDIRECTORY_H -#define _CONTENTDIRECTORY_H - -#include -#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 Content Directory Service 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 deleted file mode 100644 index c61c39f..0000000 --- a/inc/upnp/dlna.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 - -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 mRegisteredProfiles; -}; - -#endif /* _DLNA_H */ - diff --git a/inc/upnp/service.h b/inc/upnp/service.h deleted file mode 100644 index df74d9b..0000000 --- a/inc/upnp/service.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * File: upnpservice.h - * Author: savop - * - * Created on 21. August 2009, 18:38 - */ - -#ifndef _UPNPSERVICE_H -#define _UPNPSERVICE_H - -#include - -/** - * 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 deleted file mode 100644 index f194186..0000000 --- a/inc/util.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * File: util.h - * Author: savop - * - * Created on 21. Mai 2009, 21:25 - */ - -#ifndef _UTIL_H -#define _UTIL_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#if 0 -} -#endif - -#include -#include -/** - * 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 NULL, in case of an error - * - \bc the newly created property node or the node at which the attribute was - * appended to - * @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 - */ -IXML_Element* ixmlAddProperty(IN IXML_Document* document, IN IXML_Element* node, IN const char* upnpproperty, IN const char* value ); - -IXML_Element* ixmlAddFilteredProperty(IN cStringList* Filter, IN IXML_Document* document, IN IXML_Element* node, IN const char* upnpproperty, IN 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 deleted file mode 100644 index 0a49cf9..0000000 --- a/inc/webserver.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * File: upnpwebserver.h - * Author: savop - * - * Created on 30. Mai 2009, 18:13 - */ - -#ifndef _UPNPWEBSERVER_H -#define _UPNPWEBSERVER_H - -#include "../common.h" -#include - -/** - * 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 Intel SDK 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 buflen 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 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 - * - * @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/misc/config.cpp b/misc/config.cpp deleted file mode 100644 index 10ed166..0000000 --- a/misc/config.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * File: config.cpp - * Author: savop - * - * Created on 15. August 2009, 13:03 - */ - -#include -#include -#include -#include "config.h" -#include "../common.h" -#include "../upnp.h" - -cUPnPConfig::cUPnPConfig(){ - this->mDatabaseFolder = NULL; - this->mHTTPFolder = NULL; - this->mParsedArgs = NULL; - this->mInterface = NULL; - this->mAddress = NULL; - this->mAutoSetup = 0; - this->mEnable = 0; - this->mPort = 0; -} - -cUPnPConfig::~cUPnPConfig(){} - -cUPnPConfig* cUPnPConfig::get(){ - if(cUPnPConfig::mInstance == NULL) - cUPnPConfig::mInstance = new cUPnPConfig(); - - if(cUPnPConfig::mInstance) - return cUPnPConfig::mInstance; - else return NULL; -} - -cUPnPConfig* cUPnPConfig::mInstance = NULL; -int cUPnPConfig::verbosity = 0; - -bool cUPnPConfig::processArgs(int argc, char* argv[]){ - // Implement command line argument processing here if applicable. - static struct option long_options[] = { - {"int", required_argument, NULL, 'i'}, - {"address", required_argument, NULL, 'a'}, - {"port", required_argument, NULL, 'p'}, - {"autodetect", no_argument, NULL, 'd'}, - {"verbose", no_argument, NULL, 'v'}, - {"httpdir", required_argument, NULL, 0}, - {"dbdir", required_argument, NULL, 0}, - {0, 0, 0, 0} - }; - - int c = 0; int index = -1; - struct option* opt = NULL; - - // Check if anything went wrong by setting 'success' to false - // As there are multiple tests you may get a faulty behavior - // if the current value is not considered in latter tests. - // Asume that: Success = true; - // success && false = false; --> new value of success is false - // success && true = true; --> still true. - // So, in the case of true and only true, success contains the - // desired value. - bool success = true; - bool ifaceExcistent = false; - bool addExcistent = false; - static int verbose = 0; - - while((c = getopt_long(argc, argv, "i:a:p:dv",long_options, &index)) != -1){ - switch(c){ - case 'i': - if(addExcistent) { ERROR("Address given but must be absent!"); return false; } - success = this->parseSetup(SETUP_SERVER_INT, optarg) && success; - success = this->parseSetup(SETUP_SERVER_ADDRESS, NULL) && success; - success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; - ifaceExcistent = true; - break; - case 'a': - if(ifaceExcistent) { ERROR("Interface given but must be absent!"); return false; } - success = this->parseSetup(SETUP_SERVER_ADDRESS, optarg) && success; - success = this->parseSetup(SETUP_SERVER_INT, NULL) && success; - success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; - addExcistent = true; - break; - case 'p': - success = this->parseSetup(SETUP_SERVER_PORT, optarg) && success; - success = this->parseSetup(SETUP_SERVER_AUTO, "0") && success; - break; - case 'd': - success = this->parseSetup(SETUP_SERVER_AUTO, optarg) && success; - break; - case 'v': - cUPnPConfig::verbosity++; - verbose++; - break; - case 0: - opt = &long_options[index]; - if(!strcasecmp("httpdir", opt->name)){ - success = this->parseSetup(SETUP_WEBSERVER_DIR, optarg) && success; - } - else if(!strcasecmp("dbdir", opt->name)){ - success = this->parseSetup(SETUP_DATABASE_DIR, optarg) && success; - } - break; - default: - return false; - } - } - - return success; -} - -bool cUPnPConfig::parseSetup(const char *Name, const char *Value) -{ - const char* ptr; - if(*this->mParsedArgs && (ptr = strstr(this->mParsedArgs,Name))!=NULL){ - MESSAGE(VERBOSE_SDK, "Skipping %s=%s, was overridden in command line.",Name, Value); - return true; - } - - MESSAGE(VERBOSE_SDK, "VARIABLE %s has value %s", Name, Value); - // Parse your own setup parameters and store their values. - if (!strcasecmp(Name, SETUP_SERVER_ENABLED)) this->mEnable = atoi(Value); - else if (!strcasecmp(Name, SETUP_SERVER_AUTO)) this->mAutoSetup = atoi(Value); - else if (!strcasecmp(Name, SETUP_SERVER_INT)) this->mInterface = strdup0(Value); // (Value) ? strn0cpy(this->mInterface, Value, strlen(this->mInterface)) : NULL; - else if (!strcasecmp(Name, SETUP_SERVER_ADDRESS)) this->mAddress = strdup0(Value); //(Value) ? strn0cpy(this->mAddress, Value, strlen(this->mAddress)) : NULL; - else if (!strcasecmp(Name, SETUP_SERVER_PORT)) this->mPort = atoi(Value); - else if (!strcasecmp(Name, SETUP_WEBSERVER_DIR)) this->mHTTPFolder = strdup0(Value); - else if (!strcasecmp(Name, SETUP_DATABASE_DIR)) this->mDatabaseFolder = strdup0(Value); - else return false; - - this->mParsedArgs = cString::sprintf("%s%s",*this->mParsedArgs,Name); - - return true; -} \ No newline at end of file diff --git a/misc/menusetup.cpp b/misc/menusetup.cpp deleted file mode 100644 index c385b2d..0000000 --- a/misc/menusetup.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/* - * File: menusetup.cpp - * Author: savop - * - * Created on 19. April 2009, 16:50 - */ - -#include "config.h" -#include -#include "menusetup.h" -#include "../common.h" -#include "util.h" -#include -#include -#include -#include - - -cMenuSetupUPnP::cMenuSetupUPnP(){ - // Get server acitve state - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Creating menu"); - this->mCtrlBind = NULL; - this->mCtrlAutoMode = NULL; - this->mCtrlEnabled = NULL; - this->mCtrlPort = NULL; - this->mEnable = 0; - this->mDetectPort = 0; - this->mAutoSetup = 0; - this->mPort = 0; - this->mAddress = NULL; - this->mInterfaceIndex = 0; - this->Load(); - this->Update(); -} - -//cMenuSetupUPnP::~cMenuSetupUPnP() { -// delete this->mCtrlAutoMode; -// delete this->mCtrlEnabled; -// delete this->mCtrlPort; -// free(this->mAddress); -//} - -void cMenuSetupUPnP::Load(void){ - cUPnPConfig* Config = cUPnPConfig::get(); - this->mEnable = Config->mEnable; - this->mAutoSetup = Config->mAutoSetup; - this->mInterfaceIndex = this->getInterfaceIndex(Config->mInterface); - this->mAddress = strdup(Config->mAddress?Config->mAddress:"0.0.0.0"); - this->mPort = Config->mPort; - - if(Config->mPort==0) this->mDetectPort = 1; -} - -const char* const* cMenuSetupUPnP::getInterfaceList(int* count){ - char** Ifaces = getNetworkInterfaces(count); - char** IfaceList = new char*[++(*count)]; - IfaceList[0] = strdup(_("User defined")); - for(int i=0; i < *count-1; i++){ - IfaceList[i+1] = strdup(Ifaces[i]); - } - delete [] Ifaces; - return IfaceList; -} - -int cMenuSetupUPnP::getInterfaceIndex(const char* Interface){ - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Getting Index of %s", Interface); - if(!Interface) return 0; - int count; - int Index = 0; - const char* const* Ifaces = this->getInterfaceList(&count); - - for(int i=1; i < count; i++){ - if(!strcmp(Interface, Ifaces[i])){ - Index = i; - break; - } - } - delete [] Ifaces; - return Index; -} - -const char* cMenuSetupUPnP::getInterface(int Index){ - int count; - const char* const* Ifaces = this->getInterfaceList(&count); - - if(count < Index || Index < 1) return NULL; - const char* Interface = strdup0(Ifaces[Index]); - delete [] Ifaces; - return Interface; -} - -void cMenuSetupUPnP::Update(void){ - int Current = this->Current(); - this->Clear(); - // Add OSD menu item for enabling UPnP Server - this->Add(mCtrlEnabled = new cMenuEditBoolItem(_("Enable UPnP Server"),&this->mEnable,_("disabled"),_("enabled"))); - if(this->mEnable){ - cMenuEditIntItem* editPortItem = NULL; - this->Add(mCtrlAutoMode = new cMenuEditBoolItem(_("Auto detect settings"),&this->mAutoSetup,_("no"),_("yes"))); - // Add OSD menu item for IP address - int Count; - const char* const* Interfaces = this->getInterfaceList(&Count); - this->Add(mCtrlBind = new cMenuEditStraItem(_("Bind to network interface"), &this->mInterfaceIndex, Count, Interfaces)); - - cMenuEditIpItem* editIpItem; - if(this->mInterfaceIndex){ - const sockaddr_in* addr = getIPFromInterface(this->getInterface(this->mInterfaceIndex)); - char* IP = strdup(inet_ntoa(addr->sin_addr)); - editIpItem = new cMenuEditIpItem(_("Current IP address"),IP); - editIpItem->SetSelectable(false); - free(IP); - } - else { - editIpItem = new cMenuEditIpItem(_("Set IP address"),this->mAddress); - } - this->Add(editIpItem); - this->Add(mCtrlPort = new cMenuEditBoolItem(_("Select port"), &this->mDetectPort, _("auto"), _("user definied"))); - if(this->mDetectPort){ - this->Add(editPortItem = new cMenuEditIntItem(_("User specified port"), - &this->mPort, - SERVER_MIN_PORT, - SERVER_MAX_PORT - )); - } - - if(this->mAutoSetup){ - if(mCtrlPort) mCtrlPort->SetSelectable(false); - if(mCtrlBind) mCtrlBind->SetSelectable(false); - if(editPortItem) editPortItem->SetSelectable(false); - if(editIpItem) editIpItem->SetSelectable(false); - } - else { - if(mCtrlPort) mCtrlPort->SetSelectable(true); - if(mCtrlBind) mCtrlBind->SetSelectable(true); - if(editPortItem) editPortItem->SetSelectable(true); - if(editIpItem && !this->mInterfaceIndex) editIpItem->SetSelectable(true); - } - } - this->SetCurrent(this->Get(Current)); - this->Display(); -} - -eOSState cMenuSetupUPnP::ProcessKey(eKeys Key){ - - cOsdItem *Item = this->Get(this->Current()); - - eOSState State = cMenuSetupPage::ProcessKey(Key); - - Key = NORMALKEY(Key); - - if(Key != kRight && Key != kLeft){ - return State; - } - - if(Item == this->mCtrlEnabled){ - if(this->mEnable){ - this->Update(); - } - else if (!this->mEnable) { - this->Update(); - } - } - else if (Item == this->mCtrlPort){ - if(this->mDetectPort){ - this->Update(); - } - else if(!this->mDetectPort) { - this->Update(); - } - } - else if (Item == this->mCtrlAutoMode){ - if(this->mAutoSetup){ - this->Update(); - } - else if(!this->mAutoSetup) { - this->Update(); - } - } - else if(Item == this->mCtrlBind){ -// if(!this->mInterfaceIndex){ -// this->Update(); -// } -// else if(!this->mInterfaceIndex){ -// this->Update(); -// } - this->Update(); - } - return State; -} - -void cMenuSetupUPnP::Store(void){ - cUPnPConfig* Config = cUPnPConfig::get(); - Config->mAddress = strdup0(this->mAddress); - Config->mAutoSetup = this->mAutoSetup; - Config->mEnable = this->mEnable; - Config->mInterface = strdup0(this->getInterface(this->mInterfaceIndex)); - Config->mPort = (this->mDetectPort) ? 0 : this->mPort; - - this->SetupStore(SETUP_SERVER_AUTO, this->mAutoSetup); - this->SetupStore(SETUP_SERVER_ENABLED, this->mEnable); - this->SetupStore(SETUP_SERVER_INT, this->getInterface(this->mInterfaceIndex)); - this->SetupStore(SETUP_SERVER_ADDRESS, this->mAddress); - this->SetupStore(SETUP_SERVER_PORT, this->mPort); - -} diff --git a/misc/search.cpp b/misc/search.cpp deleted file mode 100644 index b3534f1..0000000 --- a/misc/search.cpp +++ /dev/null @@ -1,809 +0,0 @@ -/* - * File: search.cpp - * Author: savop - * - * Created on 27. August 2009, 21:21 - */ - -// uncomment this to enable debuging of the grammar -//#define BOOST_SPIRIT_DEBUG - -#include -#include "search.h" -#include "../common.h" -#include -#include -#include - -using namespace std; -using namespace boost; -using namespace boost::spirit; - -// This is the standard callback function which will be overloaded -// with all the specific callbacks -typedef function2 expCallback; -typedef function1 propCallback; -typedef function1 opCallback; -typedef function1 charCallback; -typedef function1 intCallback; - -// The defined ColumnNames -/** @private */ -struct cProperties : symbols { -//struct cProperties : symbols<> { - cProperties(){ - add -// (UPNP_PROP_OBJECTID, UPNP_PROP_OBJECTID) -// (UPNP_PROP_PARENTID, UPNP_PROP_PARENTID) -// (UPNP_PROP_RESTRICTED, UPNP_PROP_RESTRICTED) -// (UPNP_PROP_CLASS, UPNP_PROP_CLASS) -// (UPNP_PROP_CLASSNAME, UPNP_PROP_CLASSNAME) -// (UPNP_PROP_WRITESTATUS, UPNP_PROP_WRITESTATUS) -// (UPNP_PROP_CHILDCOUNT, UPNP_PROP_CHILDCOUNT) -// (UPNP_PROP_REFERENCEID, UPNP_PROP_REFERENCEID) -// (UPNP_PROP_TITLE, UPNP_PROP_TITLE) -// (UPNP_PROP_CREATOR, UPNP_PROP_CREATOR) -// ("dc:description", "Description") -// ("dc:date", "Date") -// ("res", "Resource") -// ("res@bitrate", "Bitrate") -// ("res@duration", "Duration") -// ("res@size", "Size") -// ("res@sampleFrequency", "SampleFrequency") -// ("res@resolution", "Resolution") -// ("res@protocolInfo", "ProtocolInfo") -// ; - (UPNP_PROP_OBJECTID,UPNP_PROP_OBJECTID) - (UPNP_PROP_PARENTID,UPNP_PROP_PARENTID) - (UPNP_PROP_TITLE,UPNP_PROP_TITLE) - (UPNP_PROP_CREATOR,UPNP_PROP_CREATOR) - (UPNP_PROP_RESTRICTED,UPNP_PROP_RESTRICTED) - (UPNP_PROP_WRITESTATUS,UPNP_PROP_WRITESTATUS) - (UPNP_PROP_CLASS,UPNP_PROP_CLASS) - (UPNP_PROP_CLASSNAME,UPNP_PROP_CLASSNAME) - (UPNP_PROP_SEARCHCLASS,UPNP_PROP_SEARCHCLASS) - (UPNP_PROP_SCLASSDERIVED,UPNP_PROP_SCLASSDERIVED) - (UPNP_PROP_REFERENCEID,UPNP_PROP_REFERENCEID) - (UPNP_PROP_SCLASSNAME,UPNP_PROP_SCLASSNAME) - (UPNP_PROP_SEARCHABLE,UPNP_PROP_SEARCHABLE) - (UPNP_PROP_CHILDCOUNT,UPNP_PROP_CHILDCOUNT) - (UPNP_PROP_RESOURCE,UPNP_PROP_RESOURCE) - (UPNP_PROP_PROTOCOLINFO,UPNP_PROP_PROTOCOLINFO) - (UPNP_PROP_SIZE,UPNP_PROP_SIZE) - (UPNP_PROP_DURATION,UPNP_PROP_DURATION) - (UPNP_PROP_BITRATE,UPNP_PROP_BITRATE) - (UPNP_PROP_SAMPLEFREQUENCE,UPNP_PROP_SAMPLEFREQUENCE) - (UPNP_PROP_BITSPERSAMPLE,UPNP_PROP_BITSPERSAMPLE) - (UPNP_PROP_NOAUDIOCHANNELS,UPNP_PROP_NOAUDIOCHANNELS) - (UPNP_PROP_COLORDEPTH,UPNP_PROP_COLORDEPTH) - (UPNP_PROP_RESOLUTION,UPNP_PROP_RESOLUTION) - (UPNP_PROP_GENRE,UPNP_PROP_GENRE) - (UPNP_PROP_LONGDESCRIPTION,UPNP_PROP_LONGDESCRIPTION) - (UPNP_PROP_PRODUCER,UPNP_PROP_PRODUCER) - (UPNP_PROP_RATING,UPNP_PROP_RATING) - (UPNP_PROP_ACTOR,UPNP_PROP_ACTOR) - (UPNP_PROP_DIRECTOR,UPNP_PROP_DIRECTOR) - (UPNP_PROP_DESCRIPTION,UPNP_PROP_DESCRIPTION) - (UPNP_PROP_PUBLISHER,UPNP_PROP_PUBLISHER) - (UPNP_PROP_LANGUAGE,UPNP_PROP_LANGUAGE) - (UPNP_PROP_RELATION,UPNP_PROP_RELATION) - (UPNP_PROP_STORAGEMEDIUM,UPNP_PROP_STORAGEMEDIUM) - (UPNP_PROP_DVDREGIONCODE,UPNP_PROP_DVDREGIONCODE) - (UPNP_PROP_CHANNELNAME,UPNP_PROP_CHANNELNAME) - (UPNP_PROP_SCHEDULEDSTARTTIME,UPNP_PROP_SCHEDULEDSTARTTIME) - (UPNP_PROP_SCHEDULEDENDTIME,UPNP_PROP_SCHEDULEDENDTIME) - (UPNP_PROP_ICON,UPNP_PROP_ICON) - (UPNP_PROP_REGION,UPNP_PROP_REGION) - (UPNP_PROP_CHANNELNR,UPNP_PROP_CHANNELNR) - (UPNP_PROP_RIGHTS,UPNP_PROP_RIGHTS) - (UPNP_PROP_RADIOCALLSIGN,UPNP_PROP_RADIOCALLSIGN) - (UPNP_PROP_RADIOSTATIONID,UPNP_PROP_RADIOSTATIONID) - (UPNP_PROP_RADIOBAND,UPNP_PROP_RADIOBAND) - (UPNP_PROP_CONTRIBUTOR,UPNP_PROP_CONTRIBUTOR) - (UPNP_PROP_DATE,UPNP_PROP_DATE) - (UPNP_PROP_ALBUM,UPNP_PROP_ALBUM) - (UPNP_PROP_ARTIST,UPNP_PROP_ARTIST) - (UPNP_PROP_DLNA_CONTAINERTYPE,UPNP_PROP_DLNA_CONTAINERTYPE) - ; - } -} Properties; - -/** @private */ -struct cOperators : symbols { - cOperators(){ - add - ("=", "==") - ("!=", "!=") - ("<", "<") - (">", ">") - ("<=", "<=") - (">=", ">=") - ("contains", "LIKE") - ("doesNotContain", "NOT LIKE") - ("derivedfrom", "derivedFrom") - ; - } -} Operators; - -/** @private */ -struct cConcatOperators : symbols { - cConcatOperators(){ - add - ("and", "AND") - ("or", "OR") - ; - } -} ConcatOperators; - -/** @private */ -struct cExistanceOperator : symbols { - cExistanceOperator(){ - add - ("true", "NOT NULL") - ("false", "NULL") - ; - } -} Existance; - -// THE GRAMMAR! -// This is the grammar including the functors which calls the member functions -// of search. The callback definitions at the end of the constructor are -// essential. DO NOT MODIFY if you don't know how! -/** @private */ -struct cSearchGrammar : public boost::spirit::grammar { - // The callbacks members - charCallback &endBrackedExp; - expCallback &pushSimpleExp; - opCallback &pushOperator; - expCallback &pushQuotedValue; - opCallback &pushExistance; - propCallback &pushProperty; - opCallback &pushConcatOp; - charCallback &startBrackedExp; - - // Constructor with the callback functions - cSearchGrammar( - charCallback &endBrackedExp, - expCallback &pushSimpleExp, - opCallback &pushOperator, - expCallback &pushQuotedValue, - opCallback &pushExistance, - propCallback &pushProperty, - opCallback &pushConcatOp, - charCallback &startBrackedExp): - endBrackedExp(endBrackedExp), - pushSimpleExp(pushSimpleExp), - pushOperator(pushOperator), - pushQuotedValue(pushQuotedValue), - pushExistance(pushExistance), - pushProperty(pushProperty), - pushConcatOp(pushConcatOp), - startBrackedExp(startBrackedExp){} - - template - /** @private */ - struct definition { - boost::spirit::rule searchCrit, searchExp, logOp, \ - relExp, binOp, relOp, stringOp, \ - existsOp, boolVal, quotedVal, \ - wChar, property, brackedExp, exp; - const boost::spirit::rule &start(){ - return searchCrit; - } - definition(const cSearchGrammar &self){ - /*************************************************************************\ - * * - * The grammar of a UPnP search expression * - * * - * searchCrit ::= searchExp | asterisk * - * * - * searchExp ::= relExp | * - * searchExp wChar+ logOp wChar+ searchExp | * - * '(' wChar* searchExp wChar* ')' * - * * - * logOp ::= 'and' | 'or' * - * * - * relExp ::= property wChar+ binOp wChar+ quotedVal | * - * property wChar* existsOp wChar+ boolVal * - * * - * binOp ::= relOp | stringOp * - * * - * relOp ::= '=' | '!=' | '<' | '<=' | '>' | '>=' * - * * - * stringOp ::= 'contains' | 'doesNotContain' | 'derivedfrom' * - * * - * existsOp ::= 'exists' * - * * - * boolVal ::= 'true' | 'false' * - * * - * quotedVal ::= dQuote escapedQuote dQuote * - * * - * wChar ::= space | hTab | lineFeed | * - * vTab | formFeed | return * - * * - * property ::= See ContentDirectory Section 2.4 * - * * - * escapedQuote ::= See ContentDirectory Section 2.3.1 * - * * - \*************************************************************************/ - searchCrit = searchExp | "*"; - - searchExp = exp >> *(+wChar >> logOp >> +wChar >> exp); - ; - - exp = relExp - | brackedExp - ; - - brackedExp = confix_p( - ch_p('(')[self.startBrackedExp], - *wChar >> searchExp >> *wChar, - ch_p(')')[self.endBrackedExp] - ) - ; - - logOp = ConcatOperators[self.pushConcatOp] - ; - - relExp = (property >> +wChar >> binOp >> +wChar >> quotedVal) [self.pushSimpleExp] - | (property >> +wChar >> existsOp >> +wChar >> boolVal) [self.pushSimpleExp] - ; - - binOp = Operators[self.pushOperator] - ; - - existsOp = str_p("exists") - ; - - boolVal = Existance[self.pushExistance] - ; - - quotedVal = confix_p('"', (*c_escape_ch_p)[self.pushQuotedValue], '"'); - - wChar = space_p; - - property = Properties[self.pushProperty] - ; - - // Debug mode - #ifdef BOOST_SPIRIT_DEBUG - BOOST_SPIRIT_DEBUG_NODE(searchCrit); - BOOST_SPIRIT_DEBUG_NODE(searchExp); - BOOST_SPIRIT_DEBUG_NODE(logOp); - BOOST_SPIRIT_DEBUG_NODE(relExp); - BOOST_SPIRIT_DEBUG_NODE(binOp); - BOOST_SPIRIT_DEBUG_NODE(relOp); - BOOST_SPIRIT_DEBUG_NODE(stringOp); - BOOST_SPIRIT_DEBUG_NODE(existsOp); - BOOST_SPIRIT_DEBUG_NODE(boolVal); - BOOST_SPIRIT_DEBUG_NODE(quotedVal); - BOOST_SPIRIT_DEBUG_NODE(wChar); - BOOST_SPIRIT_DEBUG_NODE(property); - #endif - } - }; -}; - -/** @private */ -struct cSortGrammar : public boost::spirit::grammar { - // The callback members - propCallback &pushProperty; - charCallback &pushDirection; - - cSortGrammar( - propCallback &pushProperty, - charCallback &pushDirection): - pushProperty(pushProperty), - pushDirection(pushDirection){} - - template - /** @private */ - struct definition { - boost::spirit::rule sortCrit, sortExp, property, direction; - - const boost::spirit::rule &start(){ - return sortCrit; - } - definition(const cSortGrammar &self){ - sortCrit = sortExp - ; - - sortExp = direction >> property >> *(ch_p(',') >> sortExp) - ; - - direction = sign_p[self.pushDirection] - ; - - property = Properties[self.pushProperty] - ; - } - }; -}; - -/** @private */ -struct cFilterGrammar : public boost::spirit::grammar { - // The callback members - propCallback &pushProperty; - charCallback &pushAsterisk; - - cFilterGrammar( - propCallback &pushProperty, - charCallback &pushAsterisk): - pushProperty(pushProperty), - pushAsterisk(pushAsterisk){} - - template - /** @private */ - struct definition { - boost::spirit::rule filterCrit, filterExp, property; - - const boost::spirit::rule &start(){ - return filterCrit; - } - definition(const cFilterGrammar &self){ - filterCrit = filterExp - | ch_p('*')[self.pushAsterisk] - ; - - filterExp = property >> *(ch_p(',') >> filterExp) - ; - - property = Properties[self.pushProperty] - ; - } - }; -}; - - /**********************************************\ - * * - * The actors * - * * - \**********************************************/ - -void cSearch::pushEndBrackedExp(const char){ - MESSAGE(VERBOSE_PARSERS, "Pushing closing bracket"); - if(asprintf(&this->SQLWhereStmt, "%s)", this->SQLWhereStmt)==-1){ - ERROR("Unable to allocate SQL Statement"); - return; - } -} - -void cSearch::pushExpression(const char*, const char*){ - - const char* Property = this->CurrentProperty; - const char* Operator = this->CurrentOperator; - const char* Value = this->CurrentValue; - - if(Property && Operator && Value){ - char* Statement; - long int IntegerValue; - - if(sscanf(Value, "%ld", &IntegerValue)!=EOF && sscanf(Value, "%*4d-%*2d-%*2d")==EOF){ - MESSAGE(VERBOSE_PARSERS, "Popping '%s %s %ld'",Property, Operator, IntegerValue); - if(asprintf(&Statement, "%s %s %ld", Property, Operator, IntegerValue)==-1){ - ERROR("Failed to allocated memory for statement."); - return; - } - } - else if(!strcasecmp(Operator, "IS")){ - MESSAGE(VERBOSE_PARSERS, "Popping '%s %s %s'", Property, Operator, Value); - if(asprintf(&Statement, "%s %s %s", Property, Operator, Value)==-1){ - ERROR("Failed to allocated memory for statement."); - return; - } - } - else { - MESSAGE(VERBOSE_PARSERS, "Popping '%s %s \"%s\"'",Property, Operator, Value); - if(asprintf(&Statement, "%s %s '%s'", Property, Operator, Value)==-1){ - ERROR("Failed to allocated memory for statement."); - return; - } - } - - if(asprintf(&this->SQLWhereStmt, "%s %s", this->SQLWhereStmt, Statement)==-1){ - ERROR("Unable to allocate SQL Statement"); - return; - } - - } - return; -} - -void cSearch::pushProperty(const char* Property){ - this->CurrentProperty = strdup(Property); - MESSAGE(VERBOSE_PARSERS, "Property %s added",Property); -} - -void cSearch::pushOperator(const char* Operator){ - this->CurrentOperator = strdup(Operator); - MESSAGE(VERBOSE_PARSERS, "Operator %s added",Operator); -} - -void cSearch::pushValue(const char* Start, const char* End){ - const char* Value = string(Start,End).c_str(); - if(!Value || !strcmp(Value,"")) return; - - this->CurrentValue = strdup(Value); - MESSAGE(VERBOSE_PARSERS, "Value %s added", Value); -} - -void cSearch::pushExistance(const char* Exists){ - this->CurrentValue = strdup(Exists); - this->CurrentOperator = strdup("IS"); - MESSAGE(VERBOSE_PARSERS, "Existance expression called. '%s'", Exists); -} - -void cSearch::pushConcatOp(const char* Operator){ - if(asprintf(&this->SQLWhereStmt, "%s %s ", this->SQLWhereStmt, Operator)==-1){ - ERROR("Unable to allocate SQL Statement"); - return; - } - - MESSAGE(VERBOSE_PARSERS, "Concatenation expression called. '%s'", Operator); -} - -void cSearch::pushStartBrackedExp(const char){ - MESSAGE(VERBOSE_PARSERS, "Pushing opening bracket"); - if(asprintf(&this->SQLWhereStmt, "%s(", this->SQLWhereStmt)==-1){ - ERROR("Unable to allocate SQL Statement"); - return; - } -} - - /**********************************************\ - * * - * The rest * - * * - \**********************************************/ - -cSearch* cSearch::mInstance = NULL; - -const char* cSearch::parse(const char* Search){ - if(!cSearch::mInstance) cSearch::mInstance = new cSearch(); - - if(cSearch::mInstance && cSearch::mInstance->parseCriteria(Search)){ - return cSearch::mInstance->SQLWhereStmt; - } - return NULL; -} - -bool cSearch::parseCriteria(const char* Search){ - - charCallback endBrackedExpCB(bind(&cSearch::pushEndBrackedExp, this, _1)); - expCallback pushSimpleExpCB(bind(&cSearch::pushExpression, this, _1, _2)); - opCallback pushOperatorCB(bind(&cSearch::pushOperator, this, _1)); - expCallback pushQuotedValueCB(bind(&cSearch::pushValue, this, _1, _2)); - opCallback pushExistanceCB(bind(&cSearch::pushExistance, this, _1)); - propCallback pushPropertyCB(bind(&cSearch::pushProperty, this, _1)); - opCallback pushConcatOpCB(bind(&cSearch::pushConcatOp, this, _1)); - charCallback startBrackedExpCB(bind(&cSearch::pushStartBrackedExp, this, _1)); - - // Craft the grammar - cSearchGrammar Grammar(endBrackedExpCB, - pushSimpleExpCB, - pushOperatorCB, - pushQuotedValueCB, - pushExistanceCB, - pushPropertyCB, - pushConcatOpCB, - startBrackedExpCB); - - MESSAGE(VERBOSE_PARSERS, "Starting search parsing"); - - if(boost::spirit::parse(Search, Grammar).full){ - MESSAGE(VERBOSE_DIDL, "Parsed search expression successfuly"); - } - else { - ERROR("Parsing search expression failed"); - return false; - } - return true; -} - -cSearch::cSearch(){ - this->CurrentOperator = NULL; - this->CurrentProperty = NULL; - this->CurrentValue = NULL; - this->SQLWhereStmt = strdup(""); -} - -cSearch::~cSearch(){ - delete this->CurrentOperator; - delete this->CurrentProperty; - delete this->CurrentValue; -} - - /**********************************************\ - * * - * The filter * - * * - \**********************************************/ - -cFilterCriteria::cFilterCriteria(){ - this->mFilterList = NULL; -} - -cFilterCriteria::~cFilterCriteria(){} - -cStringList* cFilterCriteria::parse(const char* Filter){ - cFilterCriteria* FilterParser = new cFilterCriteria; - cStringList* List = NULL; - - if(FilterParser && FilterParser->parseFilter(Filter)){ - List = FilterParser->getFilterList(); - } - - delete FilterParser; - - return List; -} - -bool cFilterCriteria::parseFilter(const char* Filter){ - this->mFilterList = new cStringList; - - if(Filter && !strcasecmp(Filter, "")){ - MESSAGE(VERBOSE_PARSERS, "Empty filter"); - return true; - } - - charCallback pushAsteriskCB(bind(&cFilterCriteria::pushAsterisk,this,_1)); - propCallback pushPropertyCB(bind(&cFilterCriteria::pushProperty,this,_1)); - - cFilterGrammar Grammar(pushPropertyCB, pushAsteriskCB); - - if(boost::spirit::parse(Filter, Grammar).full){ - MESSAGE(VERBOSE_PARSERS, "Parse filter successful"); - } - else { - ERROR("Parsing filter failed"); - return false; - } - return true; -} - - /**********************************************\ - * * - * The actors * - * * - \**********************************************/ - -void cFilterCriteria::pushProperty(const char* Property){ - MESSAGE(VERBOSE_PARSERS, "Pushing property"); - this->mFilterList->Append(strdup(Property)); -} - -void cFilterCriteria::pushAsterisk(const char){ - MESSAGE(VERBOSE_PARSERS, "Pushing asterisk (*)"); - if(this->mFilterList) delete this->mFilterList; - this->mFilterList = NULL; - return; -} - - /**********************************************\ - * * - * The sorter * - * * - \**********************************************/ - -cSortCriteria::cSortCriteria(){ - this->mCriteriaList = new cList; - this->mCurrentCrit = NULL; -} - -cSortCriteria::~cSortCriteria(){} - -cList* cSortCriteria::parse(const char* Sort){ - cSortCriteria* SortParser = new cSortCriteria; - cList* List = NULL; - if(SortParser && SortParser->parseSort(Sort)){ - List = SortParser->getSortList(); - } - - delete SortParser; - - return List; -} - -bool cSortCriteria::parseSort(const char* Sort){ - if(!Sort || !strcasecmp(Sort, "")){ - MESSAGE(VERBOSE_PARSERS, "Empty Sort"); - return true; - } - - charCallback pushDirectionCB(bind(&cSortCriteria::pushDirection,this,_1)); - propCallback pushPropertyCB(bind(&cSortCriteria::pushProperty,this,_1)); - - cSortGrammar Grammar(pushPropertyCB, pushDirectionCB); - - if(boost::spirit::parse(Sort, Grammar).full){ - MESSAGE(VERBOSE_PARSERS, "Parse Sort successful"); - } - else { - ERROR("Parsing Sort failed"); - return false; - } - return true; -} - - /**********************************************\ - * * - * The actors * - * * - \**********************************************/ - -void cSortCriteria::pushProperty(const char* Property){ - MESSAGE(VERBOSE_PARSERS, "Pushing property '%s'", Property); - this->mCurrentCrit->Property = strdup(Property); - this->mCriteriaList->Add(this->mCurrentCrit); - return; -} - -void cSortCriteria::pushDirection(const char Direction){ - MESSAGE(VERBOSE_PARSERS, "Pushing direction '%c'", Direction); - this->mCurrentCrit = new cSortCrit; - this->mCurrentCrit->SortDescending = (Direction=='-')?true:false; - return; -} - - /**********************************************\ - * * - * The pathparser * - * * - \**********************************************/ - -/** @private */ -struct cWebserverSections : symbols<> { - cWebserverSections(){ - add - (UPNP_DIR_SHARES) - ; - } -} WebserverSections; - -/** @private */ -struct cWebserverMethods : symbols { - cWebserverMethods(){ - add - ("browse", UPNP_WEB_METHOD_BROWSE) - ("download", UPNP_WEB_METHOD_DOWNLOAD) - ("search", UPNP_WEB_METHOD_SEARCH) - ("show", UPNP_WEB_METHOD_SHOW) - ("get", UPNP_WEB_METHOD_STREAM) - ; - } -} WebserverMethods; - -/** @private */ -struct cPathParserGrammar : public boost::spirit::grammar { - - intCallback &pushSection; - intCallback &pushMethod; - expCallback &pushPropertyKey; - expCallback &pushPropertyValue; - - cPathParserGrammar(intCallback &pushSection, - intCallback &pushMethod, - expCallback &pushPropertyKey, - expCallback &pushPropertyValue): - pushSection(pushSection), - pushMethod(pushMethod), - pushPropertyKey(pushPropertyKey), - pushPropertyValue(pushPropertyValue){} - - template - /** @private */ - struct definition { - boost::spirit::rule pathExp, section, method, methodProperties, - property, key, value, uncriticalChar; - - const boost::spirit::rule &start(){ - return pathExp; - } - definition(const cPathParserGrammar &self){ - pathExp = section >> ch_p('/') >> method >> ch_p('?') >> methodProperties - ; - - section = WebserverSections[self.pushSection] - ; - - method = WebserverMethods[self.pushMethod] - ; - - methodProperties = property >> *(ch_p('&') >> methodProperties) - ; - - property = key >> ch_p('=') >> value - ; - - key = (+alnum_p)[self.pushPropertyKey] - ; - - value = (*uncriticalChar)[self.pushPropertyValue] - ; - - uncriticalChar = chset_p("-_.%~0-9A-Za-z") - ; - } - }; -}; - -cPathParser::cPathParser(){ - this->mSection = 0; - this->mMethod = 0; -} - -cPathParser::~cPathParser(){} - -bool cPathParser::parse(const char* Path, int* Section, int* Method, propertyMap* Properties){ - cPathParser* Parser = new cPathParser(); - bool ret = (Parser && Parser->parsePath(Path, Section, Method, Properties)) ? true : false; - - delete Parser; - - return ret; -} - -bool cPathParser::parsePath(const char* Path, int* Section, int* Method, propertyMap* Properties){ - if(!Path){ - return false; - } - - intCallback pushSectionCB(bind(&cPathParser::pushSection,this,_1)); - intCallback pushMethodCB(bind(&cPathParser::pushMethod,this,_1)); - expCallback pushPropertyKeyCB(bind(&cPathParser::pushPropertyKey, this, _1, _2)); - expCallback pushPropertyValueCB(bind(&cPathParser::pushPropertyValue, this, _1, _2)); - - cPathParserGrammar Grammar(pushSectionCB, pushMethodCB, pushPropertyKeyCB, pushPropertyValueCB); - - if(boost::spirit::parse(Path, Grammar).full){ - MESSAGE(VERBOSE_PARSERS, "Parse path successful"); - *Section = this->mSection; - *Method = this->mMethod; - *Properties = this->mProperties; - return true; - } - else { - ERROR("Parsing path failed"); - return false; - } - - return true; -} - - /**********************************************\ - * * - * The actors * - * * - \**********************************************/ - -void cPathParser::pushPropertyKey(const char* Start, const char* End){ - char* Key = strndup(Start, End-Start); - - MESSAGE(VERBOSE_PARSERS, "Pushing key '%s'", Key); - - this->mKey = Key; - - free(Key); -} - -void cPathParser::pushPropertyValue(const char* Start, const char* End){ - char* Value = strndup(Start, End-Start); - - MESSAGE(VERBOSE_PARSERS, "Pushing value '%s'", Value); - // TODO: urlDecode Value - - if(*this->mKey){ - char* Key = strdup(this->mKey); - this->mProperties[Key] = Value; - } -} - -void cPathParser::pushMethod(int Method){ - MESSAGE(VERBOSE_PARSERS, "Pushing method '%d'", Method); - this->mMethod = Method; -} - -void cPathParser::pushSection(int Section){ - MESSAGE(VERBOSE_PARSERS, "Pushing section '%d'", Section); - this->mSection = Section; -} \ No newline at end of file diff --git a/misc/util.cpp b/misc/util.cpp deleted file mode 100644 index 0781307..0000000 --- a/misc/util.cpp +++ /dev/null @@ -1,535 +0,0 @@ -/* - * File: util.cpp - * Author: savop, andreas - * - * Created on 21. Mai 2009, 21:25 - * - * Extracted from streamdev-server plugin common.c - * $Id: common.c,v 1.6 2008/03/31 10:34:26 schmirl Exp $ - */ -#include "util.h" -#include "../common.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#define DURATION_MAX_STRING_LENGTH 16 // DLNA: 1-5 DIGIT hours : - // 2 DIGIT minutes : - // 2 DIGIT seconds . - // 3 DIGIT fraction - -char* duration(off64_t duration, unsigned int timeBase){ - if(!timeBase){ - timeBase = 1; - } - - int seconds, minutes, hours, fraction; - - seconds = duration / timeBase; - fraction = duration % timeBase; - minutes = seconds / 60; - seconds %= 60; - hours = minutes / 60; - minutes %= 60; - - char* output = new char[DURATION_MAX_STRING_LENGTH]; - - if(timeBase > 1){ - if(!snprintf( - output, - DURATION_MAX_STRING_LENGTH, - UPNP_DURATION_FRAME_FORMAT, - hours, minutes, seconds, fraction) < 0 - ){ - delete [] output; - return NULL; - } - } - else { - if(snprintf( - output, - DURATION_MAX_STRING_LENGTH, - UPNP_DURATION_FORMAT, - hours, minutes, seconds) < 0 - ){ - delete [] output; - return NULL; - } - } - return output; -} - -char* substr(const char* str, unsigned int offset, unsigned int length){ - if(offset > strlen(str)) return NULL; - if(length > strlen(str+offset)) length = strlen(str+offset); - char* substring = (char*)malloc(sizeof(substring)*length+1); - strncpy(substring, str+offset, length); - substring[length] = '\0'; - return substring; -} - -const char* getMACFromInterface(const char* Interface) { - int fd; - struct ifreq ifr; - - fd = socket(AF_INET, SOCK_DGRAM, 0); - - ifr.ifr_addr.sa_family = AF_INET; - strncpy(ifr.ifr_name, Interface, IFNAMSIZ-1); - - ioctl(fd, SIOCGIFHWADDR, &ifr); - - close(fd); - - char *ret = new char[18]; - - sprintf(ret, "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x", - (unsigned char)ifr.ifr_hwaddr.sa_data[0], - (unsigned char)ifr.ifr_hwaddr.sa_data[1], - (unsigned char)ifr.ifr_hwaddr.sa_data[2], - (unsigned char)ifr.ifr_hwaddr.sa_data[3], - (unsigned char)ifr.ifr_hwaddr.sa_data[4], - (unsigned char)ifr.ifr_hwaddr.sa_data[5]); - - return ret; -} - -char** getNetworkInterfaces(int *count){ - int fd; - struct ifconf ifc; - struct ifreq ifr[10]; - int nifaces, i; - char** ifaces; - *count = 0; - - memset(&ifc,0,sizeof(ifc)); - ifc.ifc_buf = (char*) (ifr); - ifc.ifc_len = sizeof(ifr); - - fd = socket(AF_INET, SOCK_DGRAM, 0); - int ret = ioctl(fd, SIOCGIFCONF, &ifc); - close(fd); - if(ret==0){ - nifaces = ifc.ifc_len/sizeof(struct ifreq); - ifaces = new char* [nifaces+1]; - for(i = 0; i < nifaces; i++){ - ifaces[i] = new char[IFNAMSIZ]; - ifaces[i] = strdup(ifr[i].ifr_name); - } - ifaces[i] = NULL; - *count = nifaces; - return ifaces; - } - else { - return NULL; - } -} - -const sockaddr_in* getIPFromInterface(const char* Interface){ - if(Interface==NULL) return NULL; - int fd; - struct ifreq ifr; - fd = socket(AF_INET, SOCK_DGRAM, 0); - /* I want to get an IPv4 IP address */ - ifr.ifr_addr.sa_family = AF_INET; - /* I want IP address attached to "eth0" */ - strncpy(ifr.ifr_name, Interface, IFNAMSIZ-1); - int ret = ioctl(fd, SIOCGIFADDR, &ifr); - close(fd); - const sockaddr_in* IpAddress = new sockaddr_in; - if(ret==0){ - IpAddress = (sockaddr_in *)&ifr.ifr_addr; - return IpAddress; - } - else { - delete IpAddress; - return NULL; - } -} - -cMenuEditIpItem::cMenuEditIpItem(const char *Name, char *Value):cMenuEditItem(Name) { - value = Value; - curNum = -1; - pos = -1; - step = false; - Set(); -} - -cMenuEditIpItem::~cMenuEditIpItem() { -} - -void cMenuEditIpItem::Set(void) { - char buf[1000]; - if (pos >= 0) { - in_addr_t addr = inet_addr(value); - if ((int)addr == -1) - addr = 0; - int p = 0; - for (int i = 0; i < 4; ++i) { - p += snprintf(buf + p, sizeof(buf) - p, pos == i ? "[%d]" : "%d", - pos == i ? curNum : (addr >> (i * 8)) & 0xff); - if (i < 3) - buf[p++] = '.'; - } - SetValue(buf); - } else - SetValue(value); -} - -eOSState cMenuEditIpItem::ProcessKey(eKeys Key) { - in_addr addr; - addr.s_addr = inet_addr(value); - if ((int)addr.s_addr == -1) - addr.s_addr = 0; - - switch (Key) { - case kUp: - if (pos >= 0) { - if (curNum < 255) ++curNum; - } else - return cMenuEditItem::ProcessKey(Key); - break; - - case kDown: - if (pos >= 0) { - if (curNum > 0) --curNum; - } else - return cMenuEditItem::ProcessKey(Key); - break; - - case kOk: - if (pos >= 0) { - addr.s_addr = inet_addr(value); - if ((int)addr.s_addr == -1) - addr.s_addr = 0; - addr.s_addr &= ~(0xff << (pos * 8)); - addr.s_addr |= curNum << (pos * 8); - strcpy(value, inet_ntoa(addr)); - } else - return cMenuEditItem::ProcessKey(Key); - curNum = -1; - pos = -1; - break; - - case kRight: - if (pos >= 0) { - addr.s_addr = inet_addr(value); - if ((int)addr.s_addr == -1) - addr.s_addr = 0; - addr.s_addr &= ~(0xff << (pos * 8)); - addr.s_addr |= curNum << (pos * 8); - strcpy(value, inet_ntoa(addr)); - } - - if (pos == -1 || pos == 3) - pos = 0; - else - ++pos; - - curNum = (addr.s_addr >> (pos * 8)) & 0xff; - step = true; - break; - - case kLeft: - if (pos >= 0) { - addr.s_addr = inet_addr(value); - if ((int)addr.s_addr == -1) - addr.s_addr = 0; - addr.s_addr &= ~(0xff << (pos * 8)); - addr.s_addr |= curNum << (pos * 8); - strcpy(value, inet_ntoa(addr)); - } - - if (pos <= 0) - pos = 3; - else - --pos; - - curNum = (addr.s_addr >> (pos * 8)) & 0xff; - step = true; - break; - - case k0 ... k9: /* Netbeans reports error with this line (.. is okay but wrong) */ - if (pos == -1) - pos = 0; - - if (curNum == -1 || step) { - curNum = Key - k0; - step = false; - } else - curNum = curNum * 10 + (Key - k0); - - if ((curNum * 10 > 255) || (curNum == 0)) { - in_addr addr; - addr.s_addr = inet_addr(value); - if ((int)addr.s_addr == -1) - addr.s_addr = 0; - addr.s_addr &= ~(0xff << (pos * 8)); - addr.s_addr |= curNum << (pos * 8); - strcpy(value, inet_ntoa(addr)); - if (++pos == 4) - pos = 0; - curNum = (addr.s_addr >> (pos * 8)) & 0xff; - step = true; - } - break; - - default: - return cMenuEditItem::ProcessKey(Key); - } - - Set(); - return osContinue; -} - -const char* escapeXMLCharacters(const char* Data, char** Buf){ - if(Data==NULL){ - ERROR("Escape XML: No data to escape"); - return NULL; - } - std::string NewData = ""; - int Char = 0; - for(unsigned int i = 0; i < strlen(Data); i++){ - Char = Data[i]; - switch(Char){ - case L'€': NewData += "€"; break; - case L'"': NewData += """; break; - case L'&': NewData += "&"; break; - case L'<': NewData += "<"; break; - case L'>': NewData += ">"; break; - case L'¡': NewData += "¡"; break; - case L'¢': NewData += "¢"; break; - case L'£': NewData += "£"; break; - case L'¤': NewData += "¤"; break; - case L'¥': NewData += "¥"; break; - case L'¦': NewData += "¦"; break; - case L'§': NewData += "§"; break; - case L'¨': NewData += "¨"; break; - case L'©': NewData += "©"; break; - case L'ª': NewData += "ª"; break; - case L'¬': NewData += "¬"; break; - case L'­': NewData += "­"; break; - case L'®': NewData += "®"; break; - case L'¯': NewData += "¯"; break; - case L'°': NewData += "°"; break; - case L'±': NewData += "±"; break; - case L'²': NewData += "²"; break; - case L'³': NewData += "³"; break; - case L'´': NewData += "´"; break; - case L'µ': NewData += "µ"; break; - case L'¶': NewData += "¶"; break; - case L'·': NewData += "·"; break; - case L'¸': NewData += "¸"; break; - case L'¹': NewData += "¹"; break; - case L'º': NewData += "º"; break; - case L'»': NewData += "»"; break; - case L'«': NewData += "«"; break; - case L'¼': NewData += "¼"; break; - case L'½': NewData += "½"; break; - case L'¾': NewData += "¾"; break; - case L'¿': NewData += "¿"; break; - case L'À': NewData += "À"; break; - case L'Á': NewData += "Á"; break; - case L'Â': NewData += "Â"; break; - case L'Ã': NewData += "Ã"; break; - case L'Ä': NewData += "Ä"; break; - case L'Å': NewData += "Å"; break; - case L'Æ': NewData += "Æ"; break; - case L'Ç': NewData += "Ç"; break; - case L'È': NewData += "È"; break; - case L'É': NewData += "É"; break; - case L'Ê': NewData += "Ê"; break; - case L'Ë': NewData += "Ë"; break; - case L'Ì': NewData += "Ì"; break; - case L'Í': NewData += "Í"; break; - case L'Î': NewData += "Î"; break; - case L'Ï': NewData += "Ï"; break; - case L'Ð': NewData += "Ð"; break; - case L'Ñ': NewData += "Ñ"; break; - case L'Ò': NewData += "Ò"; break; - case L'Ó': NewData += "Ó"; break; - case L'Ô': NewData += "Ô"; break; - case L'Õ': NewData += "Õ"; break; - case L'Ö': NewData += "Ö"; break; - case L'×': NewData += "×"; break; - case L'Ø': NewData += "Ø"; break; - case L'Ù': NewData += "Ù"; break; - case L'Ú': NewData += "Ú"; break; - case L'Û': NewData += "Û"; break; - case L'Ü': NewData += "Ü"; break; - case L'Ý': NewData += "Ý"; break; - case L'Þ': NewData += "Þ"; break; - case L'ß': NewData += "ß"; break; - case L'à': NewData += "à"; break; - case L'á': NewData += "á"; break; - case L'â': NewData += "â"; break; - case L'ã': NewData += "ã"; break; - case L'ä': NewData += "ä"; break; - case L'å': NewData += "å"; break; - case L'æ': NewData += "æ"; break; - case L'ç': NewData += "ç"; break; - case L'è': NewData += "è"; break; - case L'é': NewData += "é"; break; - case L'ê': NewData += "ê"; break; - case L'ë': NewData += "ë"; break; - case L'ì': NewData += "ì"; break; - case L'í': NewData += "í"; break; - case L'î': NewData += "î"; break; - case L'ï': NewData += "ï"; break; - case L'ð': NewData += "ð"; break; - case L'ñ': NewData += "ñ"; break; - case L'ò': NewData += "ò"; break; - case L'ó': NewData += "ó"; break; - case L'ô': NewData += "ô"; break; - case L'õ': NewData += "õ"; break; - case L'ö': NewData += "ö"; break; - case L'÷': NewData += "÷"; break; - case L'ø': NewData += "ø"; break; - case L'ù': NewData += "ù"; break; - case L'ú': NewData += "ú"; break; - case L'û': NewData += "û"; break; - case L'ü': NewData += "ü"; break; - case L'ý': NewData += "ý"; break; - case L'þ': NewData += "þ"; break; - default: NewData += Data[i]; break; - } - } - *Buf = strdup(NewData.c_str()); - return (*Buf); -} - -//Function copied from Intel SDK -/////////////////////////////////////////////////////////////////////////// -// -// 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. -// -/////////////////////////////////////////////////////////////////////////// -/******************************************************************************** - * SampleUtil_GetFirstDocumentItem - * - * Description: - * Given a document node, this routine searches for the first element - * named by the input string item, and returns its value as a string. - * String must be freed by caller using free. - * Parameters: - * doc -- The DOM document from which to extract the value - * item -- The item to search for - * - * - ********************************************************************************/ -char* ixmlGetFirstDocumentItem( IN IXML_Document * doc, IN const char *item, int* error ) { - IXML_NodeList *nodeList = NULL; - IXML_Node *textNode = NULL; - IXML_Node *tmpNode = NULL; - - char *ret = NULL; - *error = 0; - - nodeList = ixmlDocument_getElementsByTagName( doc, ( char * )item ); - - if( nodeList != NULL ) { - if( ( tmpNode = ixmlNodeList_item( nodeList, 0 ) ) ) { - - textNode = ixmlNode_getFirstChild( tmpNode ); - - if(textNode != NULL){ - ret = strdup( ixmlNode_getNodeValue( textNode ) ); - } - } - } else { - *error = -1; - } - - if( nodeList != NULL) { - ixmlNodeList_free( nodeList ); - } - - - return ret; -} - -IXML_Element* ixmlAddProperty(IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ - if(!node) return NULL; - IXML_Element* PropertyNode = NULL; - - char tvalue[UPNP_MAX_METADATA_LENGTH]; - // trim the value to max metadata size - if(value){ - strncpy(tvalue, value, UPNP_MAX_METADATA_LENGTH); - } - - const char* attribute = att(upnpproperty); - const char* property = prop(upnpproperty); - if(attribute){ - if(!strcmp(property,"")){ - ixmlElement_setAttribute(node, attribute, tvalue); - } - else { - IXML_NodeList* NodeList = ixmlElement_getElementsByTagName(node, property); - if(NodeList!=NULL){ - PropertyNode = (IXML_Element*) ixmlNodeList_item(NodeList, 0); - if(PropertyNode){ - if(ixmlElement_setAttribute(PropertyNode, attribute, tvalue)!=IXML_SUCCESS){ - return NULL; - } - } - else { - ixmlNodeList_free(NodeList); - return NULL; - } - } - else { - return NULL; - } - } - } - else { - PropertyNode = ixmlDocument_createElement(document, property); - IXML_Node* PropertyText = ixmlDocument_createTextNode(document, tvalue); - ixmlNode_appendChild((IXML_Node*) PropertyNode, PropertyText); - ixmlNode_appendChild((IXML_Node*) node, (IXML_Node*) PropertyNode); - } - return PropertyNode; -} - -IXML_Element* ixmlAddFilteredProperty(cStringList* Filter, IXML_Document* document, IXML_Element* node, const char* upnpproperty, const char* value){ - // leave out empty values. - if(!value || !strcmp(value, "") || !strcmp(value, "0")){ - return NULL; - } - - if(!Filter || Filter->Find(upnpproperty)) - return ixmlAddProperty(document, node, upnpproperty, value); - else - return NULL; -} \ No newline at end of file diff --git a/po/de-DE.po b/po/de-DE.po deleted file mode 100644 index 59ece6b..0000000 --- a/po/de-DE.po +++ /dev/null @@ -1,271 +0,0 @@ -# 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 , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: 0.0.2\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-24 20:48+0100\n" -"PO-Revision-Date: 2010-01-24 20:14+0100\n" -"Last-Translator: savop \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 --int= The server network\n" -" interface\n" -" e.g: eth0, wlan1 etc.\n" -" If given option '-a' must\n" -" be absent.\n" -" -a
--address=
The server IPv4 address.\n" -" If given option '-i' must\n" -" be absent.\n" -" -p --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= The directory in which the\n" -" metadata database is stored\n" -" --httpdir= 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 --int= Die Servernetzwerkkarte\n" -" z.B: eth0, wlan1 etc.\n" -" Wenn angegeben, darf '-a'\n" -" nicht angegeben werden.\n" -" -a
--address=
Die Server-IPv4-Adresse.\n" -" Wenn angegeben, darf '-i'\n" -" nicht angegeben werden.\n" -" -p --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= Das Verzeichnis, worin die\n" -" Metadatenbank abgelegt ist\n" -" --httpdir= 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~ deleted file mode 100644 index 92bef90..0000000 --- a/po/de-DE.po~ +++ /dev/null @@ -1,273 +0,0 @@ -# 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 , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: vdr-upnp 0.0.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-24 20:11+0100\n" -"PO-Revision-Date: 2009-12-30 22:17+0100\n" -"Last-Translator: Denis \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 --int= The server network\n" -" interface\n" -" e.g: eth0, wlan1 etc.\n" -" If given option '-a' must\n" -" be absent.\n" -" -a
--address=
The server IPv4 address.\n" -" If given option '-i' must\n" -" be absent.\n" -" -p --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= The directory in which the\n" -" metadata database is stored\n" -" --httpdir= 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 --int= Die Servernetzwerkkarte\n" -" z.B.: eth0, wlan1 etc.\n" -" Falls angegeben, muss '-a'\n" -" weggelassen werden.\n" -" -a
--address=
Die Server-IPv4-Adresse.\n" -" Falls angegeben, muss '-i'\n" -" weggelassen werden.\n" -" -p --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= Das Verzeichnis, worin die\n" -" Metadatenbank gespeichert ist\n" -" --httpdir= 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/receiver/livereceiver.cpp b/receiver/livereceiver.cpp deleted file mode 100644 index a43d197..0000000 --- a/receiver/livereceiver.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* - * File: livereceiver.cpp - * Author: savop - * - * Created on 4. Juni 2009, 13:28 - */ - -#include -#include -#include -#include -#include -#include "livereceiver.h" - -cLiveReceiver* cLiveReceiver::newInstance(cChannel* Channel, int Priority){ - cDevice *Device = cDevice::GetDevice(Channel, Priority, true); - - if(!Device){ - ERROR("No matching device found to serve this channel!"); - return NULL; - } - - cLiveReceiver *Receiver = new cLiveReceiver(Channel, Device); - if(Receiver){ - MESSAGE(VERBOSE_SDK, "Receiver for channel \"%s\" created successfully.", Channel->Name()); - return Receiver; - } - else { - ERROR("Failed to create receiver!"); - return NULL; - } -} - -cLiveReceiver::cLiveReceiver(cChannel *Channel, cDevice *Device) -: cReceiver( Channel->GetChannelID(), 0, Channel->Vpid(), Channel->Apids(), Channel->Dpids(), Channel->Spids()), - mDevice(Device), mChannel(Channel){ - this->mLiveBuffer = NULL; - this->mOutputBuffer = NULL; - this->mFrameDetector = NULL; -} - -cLiveReceiver::~cLiveReceiver(void){ - if(this->IsAttached()) - this->Detach(); -} - -void cLiveReceiver::open(UpnpOpenFileMode){ - this->mLiveBuffer = new cRingBufferLinear(RECEIVER_LIVEBUFFER_SIZE, RECEIVER_RINGBUFFER_MARGIN, true, "Live TV buffer"); - this->mOutputBuffer = new cRingBufferLinear(RECEIVER_OUTPUTBUFFER_SIZE, RECEIVER_RINGBUFFER_MARGIN, true, "Streaming buffer"); - - this->mLiveBuffer->SetTimeouts(0, 100); - this->mOutputBuffer->SetTimeouts(0, 500); - - this->mFrameDetector = new cFrameDetector(this->mChannel->Vpid(), this->mChannel->Vtype()); - - this->mPatPmtGenerator.SetChannel(this->mChannel); - - this->mDevice->SwitchChannel(this->mChannel, false); - this->mDevice->AttachReceiver(this); -} - -void cLiveReceiver::Activate(bool On){ - if(On){ - this->Start(); - MESSAGE(VERBOSE_LIVE_TV, "Live receiver started."); - } - else { - if(this->Running()){ - this->Cancel(2); - } - MESSAGE(VERBOSE_LIVE_TV, "Live receiver stopped"); - } -} - -void cLiveReceiver::Receive(uchar* Data, int Length){ - if(this->Running()){ - int bytesWrote = this->mLiveBuffer->Put(Data, Length); - if(bytesWrote != Length && this->Running()){ - this->mLiveBuffer->ReportOverflow(Length - bytesWrote); - } - } -} - -void cLiveReceiver::Action(void){ - MESSAGE(VERBOSE_LIVE_TV, "Started buffering..."); - while(this->Running()){ - int bytesRead; - MESSAGE(VERBOSE_BUFFERS, "Buffer is filled with %d bytes", this->mLiveBuffer->Available()); - uchar* bytes = this->mLiveBuffer->Get(bytesRead); - if(bytes){ - int count = this->mFrameDetector->Analyze(bytes, bytesRead); - if(count){ - MESSAGE(VERBOSE_BUFFERS, "%d bytes analyzed", count); - MESSAGE(VERBOSE_BUFFERS, "%2.2f FPS", this->mFrameDetector->FramesPerSecond()); - if(!this->Running() && this->mFrameDetector->IndependentFrame()) - break; - if(this->mFrameDetector->Synced()){ - MESSAGE(VERBOSE_BUFFERS, "Frame detector synced to data stream"); - if(this->mFrameDetector->IndependentFrame()){ - this->mOutputBuffer->Put(this->mPatPmtGenerator.GetPat(), TS_SIZE); - int i = 0; - while(uchar* pmt = this->mPatPmtGenerator.GetPmt(i)){ - this->mOutputBuffer->Put(pmt, TS_SIZE); - } - } - int bytesWrote = this->mOutputBuffer->Put(bytes, count); - if(bytesWrote != count){ - this->mLiveBuffer->ReportOverflow(count - bytesWrote); - } - MESSAGE(VERBOSE_BUFFERS, "Wrote %d to output buffer", bytesWrote); - if(bytesWrote){ - this->mLiveBuffer->Del(bytesWrote); - } - else { - cCondWait::SleepMs(100); - } - } - else { - ERROR("Cannot sync to stream"); - } - } - } - } - MESSAGE(VERBOSE_LIVE_TV, "Receiver was detached from device"); -} - -int cLiveReceiver::read(char* buf, size_t buflen){ - int bytesRead = 0; - if(!this->IsAttached()) - bytesRead = -1; - else { - int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; - // Wait until the buffer size is at least half the requested buffer length - - double MinBufSize = buflen * RECEIVER_MIN_BUFFER_FILLAGE/100; - int Available = 0; - while((double)(Available = this->mOutputBuffer->Available()) < MinBufSize){ - WARNING("Too few data, waiting..."); - WARNING("Only %d bytes available, need %10f more bytes.", Available, (double)(MinBufSize-Available)); - cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); - if(!this->IsAttached()){ - MESSAGE(VERBOSE_LIVE_TV, "Lost device..."); - return 0; - } - WaitTimeout-=RECEIVER_WAIT_ON_NODATA; - if(WaitTimeout<=0){ - double seconds = (RECEIVER_WAIT_ON_NODATA_TIMEOUT/1000); - ERROR("No data received for %4.2f seconds, aborting.", seconds); - this->Activate(false); - return 0; - } - } - - uchar* buffer = this->mOutputBuffer->Get(bytesRead); - if(buffer){ - if(buflen > (size_t)bytesRead){ - memcpy(buf,(char*)buffer,bytesRead); - this->mOutputBuffer->Del(bytesRead); - } - else { - memcpy(buf,(char*)buffer,buflen); - this->mOutputBuffer->Del(buflen); - } - } - - } - MESSAGE(VERBOSE_BUFFERS, "Read %d bytes from live feed", bytesRead); - return bytesRead; -} - -int cLiveReceiver::seek(off_t, int){ - ERROR("Seeking not supported on broadcasts"); - return 0; -} - -int cLiveReceiver::write(char*, size_t){ - ERROR("Writing not allowed on broadcasts"); - return 0; -} - -void cLiveReceiver::close(){ - MESSAGE(VERBOSE_SDK, "Closing live receiver"); - this->Detach(); - delete this->mOutputBuffer; this->mOutputBuffer = NULL; - delete this->mLiveBuffer; this->mLiveBuffer = NULL; - this->mFrameDetector = NULL; - MESSAGE(VERBOSE_LIVE_TV, "Live receiver closed."); -} \ No newline at end of file diff --git a/receiver/recplayer.cpp b/receiver/recplayer.cpp deleted file mode 100644 index 8bf73d4..0000000 --- a/receiver/recplayer.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - * File: recplayer.cpp - * Author: savop - * - * Created on 8. Juni 2009, 11:57 - */ - -#include -#include -#include -#include -#include "recplayer.h" - -cRecordingPlayer *cRecordingPlayer::newInstance(cRecording* Recording){ - if(Recording->IsPesRecording()){ - ERROR("Sorry, but only TS is supported, yet!"); - return NULL; - } - - cRecordingPlayer *Player = new cRecordingPlayer(Recording); - return Player; -} -cRecordingPlayer::~cRecordingPlayer() { - delete this->mRecordingFile; - delete [] this->mLastOffsets; -} - -cRecordingPlayer::cRecordingPlayer(cRecording *Recording) : mRecording(Recording) { - MESSAGE(VERBOSE_SDK, "Created Recplayer"); - - this->mRecordingFile = new cFileName(this->mRecording->FileName(), false, false, this->mRecording->IsPesRecording()); - this->mLastOffsets = new off_t[((this->mRecording->IsPesRecording())?VDR_MAX_FILES_PER_PESRECORDING:VDR_MAX_FILES_PER_TSRECORDING)+1]; - this->scanLastOffsets(); -} - -void cRecordingPlayer::open(UpnpOpenFileMode){ - // Open() does not work?! - this->mCurrentFile = this->mRecordingFile->SetOffset(1); - if(this->mCurrentFile){ - MESSAGE(VERBOSE_RECORDS, "Record player opened"); - } - else { - ERROR("Error while opening record player file"); - } -} - -void cRecordingPlayer::close(){ - this->mRecordingFile->Close(); -} - -int cRecordingPlayer::write(char*, size_t){ - ERROR("Writing not allowed on recordings"); - return 0; -} - -int cRecordingPlayer::read(char* buf, size_t buflen){ - if(!this->mCurrentFile){ - ERROR("Current part of record is not open"); - return -1; - } - MESSAGE(VERBOSE_RECORDS, "Reading %d from record", buflen); - int bytesread = 0; - while((bytesread = this->mCurrentFile->Read(buf, buflen)) == 0){ // EOF, try next file - if(!(this->mCurrentFile = this->mRecordingFile->NextFile())){ - // no more files to read... finished! - break; - } - } - return bytesread; -} - -int cRecordingPlayer::seek(off_t offset, int origin){ - if(!this->mCurrentFile){ - ERROR("Current part of record is not open"); - return -1; - } - - MESSAGE(VERBOSE_RECORDS, "Seeking..."); - - off_t relativeOffset; - off_t curpos = this->mCurrentFile->Seek(0, SEEK_CUR); // this should not change anything - int index; - // recalculate the absolute position in the record - switch(origin){ - case SEEK_END: - offset = this->mLastOffsets[this->mLastFileNumber] + offset; - break; - case SEEK_CUR: - offset = this->mLastOffsets[this->mRecordingFile->Number()-1] + curpos + offset; - break; - case SEEK_SET: - // Nothing to change - break; - default: - ERROR("Seek operation invalid"); - return -1; - } - // finally, we can seek - // TODO: binary search - for(index = 1; this->mLastOffsets[index]; index++){ - if(this->mLastOffsets[index-1] <= offset && offset <= this->mLastOffsets[index]){ - relativeOffset = offset - this->mLastOffsets[index-1]; - break; - } - } - if(!(this->mCurrentFile = this->mRecordingFile->SetOffset(index, relativeOffset))){ - // seeking failed!!! should never happen. - this->mCurrentFile = this->mRecordingFile->SetOffset(1); - return -1; - } - - return 0; -} - -void cRecordingPlayer::scanLastOffsets(){ - // rewind - this->mCurrentFile = this->mRecordingFile->SetOffset(1); - for(int i = 1; (this->mCurrentFile = this->mRecordingFile->NextFile()); i++){ - this->mLastOffsets[i] = this->mLastOffsets[i-1] + this->mCurrentFile->Seek(0, SEEK_END); - this->mLastFileNumber = this->mRecordingFile->Number(); - } -} - diff --git a/server/server.cpp b/server/server.cpp deleted file mode 100644 index 56bf442..0000000 --- a/server/server.cpp +++ /dev/null @@ -1,371 +0,0 @@ -/* - * File: server.cpp - * Author: savop - * - * Created on 19. April 2009, 17:42 - */ - -#include -#include -#include -#include -#include -#include "server.h" -#include "util.h" -#include "config.h" -#include "../common.h" -#include "upnp/dlna.h" -#include "object.h" - -/**************************************************** - * - * The UPnP Server - * - * Handles incoming messages, UPnP connections - * and so on. - * - ****************************************************/ - -cConnectionManager* cUPnPServer::mConnectionManager = NULL; -cContentDirectory* cUPnPServer::mContentDirectory = NULL; - -cUPnPServer::cUPnPServer() { - this->mServerAddr = new sockaddr_in; - // Bugfix: this was necessary because there were - // some uninitialised bytes in the structure (Please recheck this!) - memset(this->mServerAddr,0,sizeof(sockaddr_in)); - this->mServerAddr->sin_family = AF_INET; - this->mServerAddr->sin_port = 0; - this->mIsRunning = false; - this->mIsAutoDetectionEnabled = true; - this->mIsEnabled = false; - this->mDeviceHandle = NULL; - this->mMediaDatabase = NULL; -} - -cUPnPServer::~cUPnPServer() { - delete this->mServerAddr; this->mServerAddr = NULL; - delete this->mMediaDatabase; -} - -bool cUPnPServer::init(void){ - - MESSAGE(VERBOSE_SDK, "Loading configuration..."); - cUPnPConfig* config = cUPnPConfig::get(); - this->enable(config->mEnable == 1 ? true : false); - if(!config->mAutoSetup){ - if(config->mInterface) - if(!this->setInterface(config->mInterface)){ - ERROR("Invalid network interface: %s", config->mInterface); - return false; - } - if(config->mAddress) - if(!this->setAddress(config->mAddress)){ - ERROR("Invalid IP address: %s", config->mAddress); - return false; - } - if(!this->setServerPort((short)config->mPort)){ - ERROR("Invalid port: %d", config->mPort); - return false; - } - } - else { - if(!this->setAutoDetection(config->mAutoSetup == 1 ? true : false)){ - ERROR("Invalid auto detection setting: %d", config->mAutoSetup); - return false; - } - if(!this->autoDetectSettings()){ - ERROR("Error while auto detecting settings."); - return false; - } - } - - MESSAGE(VERBOSE_SDK, "Initializing Intel UPnP SDK on %s:%d",inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); - int ret = 0; - ret = UpnpInit(inet_ntoa(this->mServerAddr->sin_addr), ntohs(this->mServerAddr->sin_port)); - - if (ret != UPNP_E_SUCCESS) { - // test if SDK was allready initiated - if (ret == UPNP_E_INIT) { - WARNING("SDK was allready initiated (no problem) - Errorcode: %d", ret); - } else { - ERROR("Error while init Intel SDK - Errorcode: %d", ret); - return false; - } - } - else { - if(!inet_aton(UpnpGetServerIpAddress(),&this->mServerAddr->sin_addr)){ - ERROR("Unable to set IP address"); - } - this->mServerAddr->sin_port = htons(UpnpGetServerPort()); - MESSAGE(VERBOSE_SDK, "Initializing succesfully at %s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); - } - - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Setting maximum packet size for SOAP requests"); - UpnpSetMaxContentLength(UPNP_SOAP_MAX_LEN); - - const char* httpdir = (cUPnPConfig::get()->mHTTPFolder) ? cUPnPConfig::get()->mHTTPFolder : cPluginUpnp::getConfigDirectory(); - //set the root directory of the webserver - cString WebserverRootDir = cString::sprintf("%s%s", httpdir, UPNP_WEB_SERVER_ROOT_DIR); - - MESSAGE(VERBOSE_SDK, "Set web server root dir: %s", *WebserverRootDir ); - this->mWebServer = cUPnPWebServer::getInstance(WebserverRootDir); - MESSAGE(VERBOSE_SDK, "Initializing web server."); - if (!this->mWebServer->init()) { - ERROR("Error while setting web server root dir - Errorcode: %d", ret); - return false; - } - - //register media server device to SDK - cString URLBase = cString::sprintf("http://%s:%d", UpnpGetServerIpAddress(), UpnpGetServerPort()); - - this->mDeviceDescription = cString(cDlna::getInstance()->getDeviceDescription(URLBase),true); - - MESSAGE(VERBOSE_SDK, "Register Media Server Device"); - ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, - this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, - &cUPnPServer::upnpActionCallback, - &this->mDeviceHandle, - &this->mDeviceHandle); - if (ret != UPNP_E_SUCCESS) { - ERROR("Error while registering device - Errorcode: %d", ret); - return false; - } - - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Unregister server to cleanup previously started servers"); - ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); - if (ret != UPNP_E_SUCCESS) { - WARNING("Unregistering old devices failed"); - return false; - } - - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Register Media Server Device"); - ret = UpnpRegisterRootDevice2(UPNPREG_BUF_DESC, - this->mDeviceDescription, sizeof(this->mDeviceDescription), 1, - &cUPnPServer::upnpActionCallback, - &this->mDeviceHandle, - &this->mDeviceHandle); - if (ret != UPNP_E_SUCCESS) { - ERROR("Error while registering device - Errorcode: %d", ret); - return false; - } - - MESSAGE(VERBOSE_SDK, "Initializing media database"); - this->mMediaDatabase = new cMediaDatabase; - if(!this->mMediaDatabase->init()){ - ERROR("Error while initializing database"); - return false; - } - - MESSAGE(VERBOSE_SDK, "Initializing connection manager"); - cUPnPServer::mConnectionManager = new cConnectionManager(this->mDeviceHandle); - MESSAGE(VERBOSE_SDK, "Initializing content directory"); - cUPnPServer::mContentDirectory = new cContentDirectory(this->mDeviceHandle, this->mMediaDatabase); - if(!cUPnPServer::mContentDirectory->Start()){ - ERROR("Unable to start content directory thread"); - return false; - } - - //send first advertisments - MESSAGE(VERBOSE_SDK, "Send first advertisements to publish start in network"); - ret = UpnpSendAdvertisement(this->mDeviceHandle, UPNP_ANNOUNCE_MAX_AGE); - if (ret != UPNP_E_SUCCESS) { - ERROR("Error while sending first advertisments - Errorcode: %d", ret); - return false; - } - - return true; -} - -bool cUPnPServer::uninit(void) { - MESSAGE(VERBOSE_SDK, "Shuting down content directory"); - delete cUPnPServer::mContentDirectory; cUPnPServer::mContentDirectory = NULL; - - MESSAGE(VERBOSE_SDK, "Shuting down connection manager"); - delete cUPnPServer::mConnectionManager; cUPnPServer::mConnectionManager = NULL; - - MESSAGE(VERBOSE_SDK, "Closing metadata database"); - delete this->mMediaDatabase; this->mMediaDatabase = NULL; - - MESSAGE(VERBOSE_SDK, "Closing the web server"); - this->mWebServer->uninit(); - delete this->mWebServer; - - MESSAGE(VERBOSE_SDK, "Close Intel SDK"); - // unregiser media server device from UPnP SDK - int ret = UpnpUnRegisterRootDevice(this->mDeviceHandle); - if (ret != UPNP_E_SUCCESS) { - WARNING("No device registered"); - } - // send intel sdk message to shutdown - ret = UpnpFinish(); - - if (ret == UPNP_E_SUCCESS) { - MESSAGE(VERBOSE_SDK, "Close Intel SDK Successfull"); - return true; - } else { - ERROR("Intel SDK unintialized or already closed - Errorcode: %d", ret); - return false; - } -} - -int cUPnPServer::upnpActionCallback(Upnp_EventType eventtype, void *event, void *cookie) { - // only to remove warning while compiling because cookie is unused - cookie = NULL; - Upnp_Subscription_Request* eventRequest = NULL; - Upnp_Action_Request* actionRequest = NULL; - - //check committed event variable - if (event == NULL) { - ERROR("UPnP Callback - NULL request"); - return UPNP_E_BAD_REQUEST; - } - - switch (eventtype) { - case UPNP_CONTROL_ACTION_REQUEST: - actionRequest = (Upnp_Action_Request*) event; - - //check that request is for this device - if (strcmp(actionRequest->DevUDN, UPNP_DEVICE_UDN) != 0) { - ERROR("UPnP Callback - actions request not for this device"); - return UPNP_E_BAD_REQUEST; - } - - //find out which service was called - if (strcmp(actionRequest->ServiceID, UPNP_CMS_SERVICE_ID) == 0) { - // proceed action - return cUPnPServer::mConnectionManager->execute(actionRequest); - - } else if (strcmp(actionRequest->ServiceID, UPNP_CDS_SERVICE_ID) == 0) { - // proceed action - return cUPnPServer::mContentDirectory->execute(actionRequest); - } else { - ERROR("UPnP Callback - unsupported service called for control"); - return UPNP_E_BAD_REQUEST; - } - case UPNP_EVENT_SUBSCRIPTION_REQUEST: - eventRequest = (Upnp_Subscription_Request*) event; - - //check that request is for this device - if (strcmp(eventRequest->UDN, UPNP_DEVICE_UDN) != 0) { - ERROR("UPnP Callback - event request not for this device"); - return UPNP_E_BAD_REQUEST; - } - - if (strcmp(eventRequest->ServiceId, UPNP_CMS_SERVICE_ID) == 0) { - // handle event request - return cUPnPServer::mConnectionManager->subscribe(eventRequest); - - } else if (strcmp(eventRequest->ServiceId, UPNP_CDS_SERVICE_ID) == 0) { - // handle event request - return cUPnPServer::mContentDirectory->subscribe(eventRequest); - } else { - ERROR("UPnP Callback - unsupported service called for eventing"); - return UPNP_E_BAD_REQUEST; - } - - return UPNP_E_BAD_REQUEST; - default: - ERROR("UPnP Action Callback - Unsupported Event"); - return UPNP_E_BAD_REQUEST; - } - - return UPNP_E_BAD_REQUEST; -} - -bool cUPnPServer::autoDetectSettings(void){ - int count; - char** Ifaces = getNetworkInterfaces(&count); - int i=0; - bool ret = false; - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "AUTODETECT: Found %d possible interfaces.", sizeof(Ifaces)); - while(Ifaces[i]){ - if(strcmp(Ifaces[i],"lo")!=0){ - // true || false == true - // false || false == false - ret = this->setInterface(strdup(Ifaces[i])) || ret; - } - i++; - } - delete [] Ifaces; - if(!ret){ - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "AUTODETECT: No suitable interface. Giving up."); - return false; - } - this->setServerPort(0); - return true; -} - -bool cUPnPServer::start(void){ - if(!this->isRunning()){ - // Put all the stuff which shall be started with the server in here - // if the startup failed due any reason return false! - MESSAGE(VERBOSE_SDK, "Starting UPnP Server on %s:%d",inet_ntoa(this->getServerAddress()->sin_addr), ntohs(this->getServerAddress()->sin_port)); - MESSAGE(VERBOSE_SDK, "Using DLNA version: %s", DLNA_PROTOCOL_VERSION_STR); - this->mIsRunning = true; - // Start Media database thread - this->mMediaDatabase->Start(); - } - return true; -} - -void cUPnPServer::stop(void){ - if(this->isRunning()){ - MESSAGE(VERBOSE_SDK, "Call upnpServer STOP"); - this->uninit(); - this->mIsRunning = false; - } - return; -} - -bool cUPnPServer::restart(void){ - MESSAGE(VERBOSE_SDK, "Call upnpServer RESTART"); - this->stop(); - return this->start(); -} - -void cUPnPServer::enable(bool enabled){ - this->mIsEnabled = enabled; -} - -bool cUPnPServer::setInterface(const char* Interface){ - if(Interface != NULL) this->mInterface = Interface; - - if(*this->mInterface!=NULL){ - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "Try to retrieve address for NIC %s",Interface); - const sockaddr_in* ipAddress = getIPFromInterface(Interface); - if(ipAddress!=NULL){ - memcpy(&this->mServerAddr->sin_addr,&ipAddress->sin_addr,sizeof(ipAddress->sin_addr)); - MESSAGE(VERBOSE_CUSTOM_OUTPUT, "NIC %s has the following IP: %s", *this->mInterface, inet_ntoa(this->mServerAddr->sin_addr)); - this->stop(); - return true; - } - delete ipAddress; - ERROR("Unable to obtain a valid IP address for NIC %s!",Interface); - } - this->mServerAddr = NULL; - return false; -} - -bool cUPnPServer::setServerPort(unsigned short port){ - // check if the port is in user range or 0 - if(port != 0 && port < SERVER_MIN_PORT) return false; - this->stop(); - this->mServerAddr->sin_port = htons(port); - return true; -} - -bool cUPnPServer::setAddress(const char* Address){ - if(inet_aton(Address, &this->mServerAddr->sin_addr) == 0) return false; - this->stop(); - return true; -} - -bool cUPnPServer::setAutoDetection(bool enable){ - this->mIsAutoDetectionEnabled = enable; - return true; -} - -sockaddr_in* cUPnPServer::getServerAddress() { - return this->mServerAddr; -} \ No newline at end of file diff --git a/server/webserver.cpp b/server/webserver.cpp deleted file mode 100644 index 04fb44a..0000000 --- a/server/webserver.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/* - * File: upnpwebserver.cpp - * Author: savop - * - * Created on 30. Mai 2009, 18:13 - */ - -#include -#include -#include -#include -#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.cpp b/upnp.cpp deleted file mode 100644 index e454b1d..0000000 --- a/upnp.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* - * upnp.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id$ - */ - -#include -#include "upnp.h" -#include "menusetup.h" -#include "config.h" - -cCondWait DatabaseLocker; - -static const char *VERSION = "0.0.2"; -static const char *DESCRIPTION = PLUGIN_DESCRIPTION; - -const char* cPluginUpnp::mConfigDirectory = NULL; - -cPluginUpnp::cPluginUpnp(void) -{ - // Initialize any member variables here. - // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL - // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! - this->mUpnpServer = new cUPnPServer(); -} - -cPluginUpnp::~cPluginUpnp() -{ - // Clean up after yourself! - delete this->mUpnpServer; -} - -const char* cPluginUpnp::getConfigDirectory(){ - return cPluginUpnp::mConfigDirectory; -} - -const char *cPluginUpnp::Version(void){ - return VERSION; -} - -const char *cPluginUpnp::Description(void) { - return DESCRIPTION; -} - -const char *cPluginUpnp::CommandLineHelp(void) -{ - // Return a string that describes all known command line options. - cString cmdHelp; - - cmdHelp = cString::sprintf(_( - " 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 --int= The server network\n" - " interface\n" - " e.g: eth0, wlan1 etc.\n" - " If given option '-a' must\n" - " be absent.\n" - " -a
--address=
The server IPv4 address.\n" - " If given option '-i' must\n" - " be absent.\n" - " -p --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= The directory in which the\n" - " metadata database is stored\n" - " --httpdir= The directory where the\n" - " http documents are located\n"), - 0, - SERVER_MIN_PORT, - SERVER_MAX_PORT - ); - return cmdHelp; -} - -bool cPluginUpnp::ProcessArgs(int argc, char *argv[]) -{ - return cUPnPConfig::get()->processArgs(argc, argv); -} - -bool cPluginUpnp::Initialize(void) -{ - // Initialize any background activities the plugin shall perform. - MESSAGE(VERBOSE_SDK, "######### LETS GET READY TO RUMBLE #########"); - - cPluginUpnp::mConfigDirectory = strdup(cPlugin::ConfigDirectory(this->Name())); - if(!cPluginUpnp::getConfigDirectory()){ - ERROR("Cannot set configuration directory"); - return false; - } - MESSAGE(VERBOSE_SDK, "Configuration directory: %s", cPluginUpnp::getConfigDirectory()); - DatabaseLocker.Signal(); - return this->mUpnpServer->init(); -} - -bool cPluginUpnp::Start(void) -{ - MESSAGE(VERBOSE_SDK, "Call plugin START"); - // Start any background activities the plugin shall perform. - return this->mUpnpServer->start(); - //return true; -} - -void cPluginUpnp::Stop(void) -{ - MESSAGE(VERBOSE_SDK, "Call plugin STOP"); - // Stop any background activities the plugin is performing. - this->mUpnpServer->stop(); -} - -cString cPluginUpnp::Active(void) -{ - // Return a message string if shutdown should be postponed - return this->mUpnpServer->isRunning() ? _("The UPnP server is still running."): NULL; -} - -cMenuSetupPage *cPluginUpnp::SetupMenu(void) -{ - // Return a setup menu in case the plugin supports one. - return new cMenuSetupUPnP(); -} - -bool cPluginUpnp::SetupParse(const char *Name, const char *Value) -{ - return cUPnPConfig::get()->parseSetup(Name, Value); -} - -VDRPLUGINCREATOR(cPluginUpnp); // Don't touch this! - diff --git a/upnp.h b/upnp.h deleted file mode 100644 index 45c7c22..0000000 --- a/upnp.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * File: upnp.h - * Author: savop - * - * Created on 17. April 2009, 20:53 - */ - -#ifndef _UPNP_H -#define _UPNP_H - -#include -#include -#include "common.h" -#include "server.h" - -class cUPnPServer; - -/** - * 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. - */ -class cPluginUpnp : public cPlugin { -private: - // Add any member variables or functions you may need here. - cUPnPServer* mUpnpServer; - static const char* mConfigDirectory; -public: - cPluginUpnp(void); - virtual ~cPluginUpnp(); - /** - * Get the version of the plugin - * - * Returns the version string of the plugin - * - * @return a string representation of the plugin version - */ - virtual const char *Version(void); - /** - * Get the description - * - * This returns a brief description of the plugin and what it does. - * - * @return the description of the plugin - */ - virtual const char *Description(void); - /** - * Get the command line help - * - * This returns the command line help output, which comes, when the user - * types \c --help into the command line. - * - * @return the command line help - */ - virtual const char *CommandLineHelp(void); - /*! @copydoc cUPnPConfig::processArgs */ - virtual bool ProcessArgs(int argc, char *argv[]); - /** - * Initializes the plugin - * - * This initializes any background activities of the plugin. - * - * @return returns - * - \bc true, if initializing was successful - * - \bc false, otherwise - */ - virtual bool Initialize(void); - /** - * Starts the plugin - * - * This starts the plugin. It starts additional threads, which are required - * by the plugin. - * - * @return returns - * - \bc true, if starting was successful - * - \bc false, otherwise - */ - virtual bool Start(void); - /** - * Stops the plugin - * - * This stops the plugin and all its components - */ - virtual void Stop(void); - /** - * Message if still active - * - * This returns a message if the plugin is still active when a user attempts - * to shut down the VDR. - * - * @return the message shown on the screen. - */ - virtual cString Active(void); - /** - * 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 - * - * @return the menu of the plugin - */ - virtual cMenuSetupPage *SetupMenu(void); - /*! @copydoc cUPnPConfig::parseSetup */ - virtual bool SetupParse(const char *Name, const char *Value); - /** - * Get the configuration directory - * - * This returns the directory, where configuration files are stored. - * - * @return the directory of the configuration files. - */ - static const char* getConfigDirectory(); -}; - -extern cCondWait DatabaseLocker; ///< Locks the database to be loaded only if - ///< the configuration file directory is set - -#endif /* _UPNP_H */ - diff --git a/upnp/connectionmanager.cpp b/upnp/connectionmanager.cpp deleted file mode 100644 index 4d1f97b..0000000 --- a/upnp/connectionmanager.cpp +++ /dev/null @@ -1,393 +0,0 @@ -/* - * File: connectionmanager.cpp - * Author: savop - * - * Created on 21. August 2009, 18:35 - */ - -#include -#include -#include -#include -#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; - 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( - " \ - %s \ - \ - ", - 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( - " \ - %s \ - ", - 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( - "\ - %s\ - %s\ - %d\ - %s\ - %d\ - %d\ - %s\ - ", - 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 deleted file mode 100644 index 954f001..0000000 --- a/upnp/contentdirectory.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* - * File: contentdirectory.cpp - * Author: savop - * - * Created on 21. August 2009, 16:12 - */ - -#include -#include -#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( - " \ - %s \ - %d \ - %d \ - %d \ - ", - 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( - " \ - %d \ - ", - 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( - " \ - %s \ - ", - 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( - " \ - %s \ - ", - 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 deleted file mode 100644 index 4d17af1..0000000 --- a/upnp/service.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * 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 -- cgit v1.2.3